home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Plus 2004 #11
/
Amiga Plus CD - 2004 - No. 11.iso
/
AmiSoft
/
Game
/
demo
/
Mattonite.lha
/
Mattonite
/
Mattonite.AMOS
/
Mattonite.amosSourceCode
Wrap
AMOS Source Code
|
2004-06-13
|
132KB
|
3,703 lines
'-> Mattonite by Stefano Maria Regattin
'i> 2 ottobre 1996
'm> 3,8,12,13,14,19,25,27,31 ottobre 1996
'm> 9 novembre 1996
'm> 12 novembre 1997
'm> 17,18,19,20,21,22,23,24,25,26,27,28,29,30,31 maggio 2000
'm> 1,4,5,6,7,8,9,11,13,14,23,26,27,28 giugno 2000
'm> 16,17,18,19,23,24 luglio 2000
'm> 5,12,13,14,15,30 agosto 2000
'm> 1,10,11,26 settembre 2000
'm> 12,15,24,25,26,31 ottobre 2000
'm> 2,16,17,21,23 novembre 2000
'm> 3 dicembre 2000
'm> 5,7,8,9,10,11,13,14,17,18,22,25,26,27,28 febbraio 2001
'm> 1 marzo 2001
'm> 15,22,23,26 aprile 2001
'm> 19,20,22,26,27,29 maggio 2001
'm> 1,2,3,4,5,9,10,12,25,28 giugno 2001
'm> 1,2,3,6,7,10,14,15,16,29,30 luglio 2001
'm> 7,8,9,14,29 agosto 2001
'm> 9,17 settembre 2001
'm> 4,5,6,7,11,12,13,15 ottobre 2001
'm> 2,3,4,5,6,8,22,25,26 novembre 2001
'm> 3,9,17,18,28,30 dicembre 2001
'm> 6,27,28 gennaio 2002
'm> 13 febbraio 2002
'm> 1,2,8,12 giugno 2002
'm> 31 luglio 2002
'm> 1,6,9,12,16,17,18,26,27 agosto 2002
'm> 11,12 settembre 2002
'm> 28,29 ottobre 2002
'm> 23,25 gennaio 2003
'm> 4,7,11,12,13,23,28 febbraio 2003
'm> 15,18,30,31 marzo 2003
'm> 28 aprile 2003
'm> 15,16,26 maggio 2003
'm> 2,8,11 giugno 2003
'm> 2 luglio 2003
'm> 21,22 agosto 2003
'm> 13,14,25 ottobre 2003
'm> 14 gennaio 2004
'm> 19 maggio 2004
'm> 12,13 giugno 2004
'---------------------
Set Buffer 25
'allocates 25 kiloBytes for variables space
Degree
'activates the degree angle misuration settings for trigonometric functions
' like Sin() and Cos()
OGGETTISTANDARD$="MattoniteStandardObjects.Abk"
'standard graphics objects
OGGETTICOLORATI$="MattoniteColouredObjects.Abk"
'coloured graphics objects
EFFETTISONORI$="MattoniteSoundFXs.Abk"
'sounds
M0DULOMEDUNO$="MattoniteMusic.MED"
'first OctaMED module
M0DULOMEDDUE$="MusicPath.MED"
'second OctaMED module
PUNTEGGI$="TopHundredScores"
'top hundred scores
VERO=-1
'true
FALSO=0
'false
'these are set not for commodity but for strange running of the executable
' derivated from this source if you replace the VERO (that means True in
' italian) and FALSO (that means False in italian) with the original True and
' False constants
ACAPO$=Chr$(10)
'new line char
ALTEZZAFONT=8
'font height
BANCOTEMPORANEO=65535
'temporary bank
BANCODELLIVELLO=65534
'level bank
BANCODELMOTIVODIFONDO=65533
'background motive bank
BANCODELMODULOMED=1023
'OctaMED module music bank
DURATADELMOTIVODIFONDO=0
'background motive duration, that is fifty fiftythes (one second) for 14 secs
IMMAGINIBOING=8
'boing images
IMMAGINIBOINGMORTALE=26
'killer boing images
IMMAGINIESPLOSIONEMATTONCINO=13
'brick explosion images
IMMAGINIGUANO=1
'guano images
IMMAGININEMICOUNO=36
'enemy one images
IMMAGINIPAPERO=4
'duck images
IMMAGINIPROIETTILENEMICIUNO=1
'enemies one bullet images
IMMAGINIRUBAPALLINA=11
'ballthief images
LARGHEZZAPANNELLO=48
'panel width
MASSIMOBOINGINCAMPO=3
'boing maximum
MASSIMOCOMPORTAMENTIDEINEMICI=1
'enemy behavioures maximum
MASSIMOMATTONCINIDARIDISEGNARE=247
'brick to redraw maximum
MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO=8
'bonus bricks maximum
MASSIMONEMICIUNOINCAMPO=5
'enemies one maximum
MASSIMOPALLINEINCAMPO=5
'balls maximum
MASSIMOPROIETTILIINCAMPO=MASSSIMONEMICIUNOINCAMPO
MATTONCINIDIPOTENZIAMENTOCOLORATI=0
'flag that reports 1 if you want the coloured objects or 0 if you want the
' standard ones
MOSTRASOLOILPUNTEGGIOMASSIMO=1
'flag that report 1 if you want the top score displayed or 0 if only the
' higher coming
MOTIVODIFONDOCARICATO=0
'background motive loaded flag
OGGETTORIGA=0
'row object
OGGETTOCENTRODELLABARRA=1
'bar centre object
OGGETTOLATIDELLABARRA=OGGETTOCENTRODELLABARRA+1
'bar sides object
OGGETTOLASER=OGGETTOLATIDELLABARRA+1
'laser beam object
OGGETTORAGGIOLASER=OGGETTOLASER+1
'laser ray object
OGGETTOMATTONCINODIPOTENZIAMENTO=OGGETTORAGGIOLASER+1
'first bonus bricks object
OGGETTOBOING=OGGETTOMATTONCINODIPOTENZIAMENTO+MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO
'first boing object
OGGETTONEMICOUNO=OGGETTOBOING+MASSIMOBOINGINCAMPO
'first enemy one object
OGGETTOPROIETTILENEMICOUNO=OGGETTONEMICOUNO+MASSIMONEMICIUNOINCAMPO
'first enemies one bullet
OGGETTOPAPERO=251
'duck object
OGGETTOGUANO=252
'guano object
OGGETTOPAPEROALIENO=253
'alien duck object
OGGETTORUBAPALLINA=254
'ballthief object
OGGETTOPALLINA=OGGETTOPAPERO-MASSIMOPALLINEINCAMPO
'first ball object
PRIMAPARTITA=VERO
'this flag is true if you are playing your first game
RITARDODELLENTRATAINCAMPODEIBOING=-1000
'boing in game appearition delay
RITARDODELLENTRATAINCAMPODEINEMICI=-3000
'enemies in game appearition delay
SEMITONO#=1.05946
'distance between two semitones multiply factor
VOCE=1
'voice
Dim NOMEDELGIOCATORE$(99),LIVELLOINCUIILGIOCATOREHAFINITOILGIOCO$(99)
'players name, level up to the players have played
Dim PUNTEGGIODELGIOCATORE$(99)
'player score
Dim DELTAXPALLINA#(MASSIMOPALLINEINCAMPO-1)
'ball X movement
Dim DELTAXPROIETTILENEMICOUNO#(MASSIMONEMICIUNOINCAMPO-1)
'enemy one bullet X movement
Dim DELTAYPALLINA#(MASSIMOPALLINEINCAMPO-1)
'ball Y movement
Dim DELTAYPROIETTILENEMICOUNO#(MASSIMONEMICIUNOINCAMPO-1)
'enemy one bullet Y movement
Dim VELOCITADELLAPALLINA#(MASSIMOPALLINEINCAMPO-1)
'ball velocity
Dim XPALLINA#(MASSIMOPALLINEINCAMPO-1),YPALLINA#(MASSIMOPALLINEINCAMPO-1)
'X and Y balls coords on screen
Dim BOING(MASSIMOBOINGINCAMPO-1),BOINGMORTALE(MASSIMOBOINGINCAMPO-1)
'boings, killer boing marker
Dim C0LORE(31),DURATADELLARIGA(2)
'colors that can be changed, row in game duration
Dim DURATADELRIDISEGNODELMATTONCINO(MASSIMOMATTONCINIDARIDISEGNARE-1)
'redrawing brick process duration
Dim ESPLOSIONEMATTONCINO(246),IMMAGINEBOING(IMMAGINIBOING-1)
'brick explosion, boing image
Dim IMMAGINEBOINGMORTALE(IMMAGINIBOINGMORTALE)
'killer boing image
Dim IMMAGINEESPLOSIONEMATTONCINO(IMMAGINIESPLOSIONEMATTONCINO)
'brick explosion image
Dim IMMAGINENEMICOUNO(IMMAGININEMICOUNO-1)
'enemy one image
Dim IMMAGINEPAPERO(IMMAGINIPAPERO-1),IMMAGINEPAPEROALIENO(IMMAGINIPAPERO-1)
'duck image, alien duck image
Dim IMMAGINERUBAPALLINA(IMMAGINIRUBAPALLINA-1),INGOMBRODELLABARRA(2)
'ballthief image, bar side width
Dim LAPALLINAERIMASTAINCOLLATAALLABARRA(MASSIMOPALLINEINCAMPO-1)
'ball glued to the bar
Dim LAPALLINAHACOLPITOLABARRA(MASSIMOPALLINEINCAMPO-1)
'ball has hitted the bar
Dim LAPALLINAHARIMBALZATOSUUNBORDODELLABARRA(MASSIMOPALLINEINCAMPO-1)
'ball has hitted one bar side
Dim MATTONCINO(246),MATTONCINODARIDISEGNARE(MASSIMOMATTONCINIDARIDISEGNARE-1)
'brick, brick to be redrawed
Dim MATTONCINODIPOTENZIAMENTO(MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO-1)
'bonus brick
Dim NEMICOUNO(MASSIMONEMICIUNOINCAMPO-1)
'enemy one
Dim PALLINA(MASSIMOPALLINEINCAMPO-1)
'ball
Dim PROIETTILENEMICOUNO(MASSIMONEMICIUNOINCAMPO-1)
'enemy one bullet
Dim ROTAZIONEBOING(MASSIMOBOINGINCAMPO-1)
'boing rotation direction
Dim ROTAZIONENEMICOUNO(MASSIMONEMICIUNOINCAMPO-1)
'enemy one rotation direction
Dim X0ZONA(246),XBOING(MASSIMOBOINGINCAMPO-1),XCOLLA(MASSIMOPALLINEINCAMPO-1)
'brick X coord, boing X coord, glued ball X coord
Dim XDIPARTENZANEMICOUNO(MASSIMONEMICIUNOINCAMPO-1)
'enemies one start X
Dim XMATTONCINODIPOTENZIAMENTO(MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO-1)
'X bonus brick coord
Dim XNEMICOUNO(MASSIMONEMICIUNOINCAMPO-1)
'enemy one X coord,
Dim XPROIETTILENEMICOUNO(MASSIMONEMICIUNOINCAMPO-1),Y0ZONA(246)
'enemy one bullet X coord, brick Y coord
Dim YBOING(MASSIMOBOINGINCAMPO-1),YCOLLA(MASSIMOPALLINEINCAMPO-1)
'boing Y coord, glued ball Y coord
Dim YMATTONCINODIPOTENZIAMENTO(MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO-1)
'Y bonus brick coord
Dim YNEMICOUNO(MASSIMONEMICIUNOINCAMPO-1)
'enemy one Y coord
Dim YPROIETTILENEMICOUNO(MASSIMONEMICIUNOINCAMPO-1)
'enemy one bullet Y coord
Global VERO,FALSO
'True. False
Global ACAPO$,CENTOGIOCATORI$,EFFETTISONORI$,OGGETTI$,M0DULOMEDUNO$
'one hundred players, soundFXs, objects, med module one
Global M0DULOMEDDUE$,OGGETTICOLORATI$,OGGETTISTANDARD$,PERCORSO$
'med module two, coloured objects, standard objects, main path
Global PERCORSODEILIVELLI$,PERCORSODELLAGRAFICA$,PERCORSODELLAMUSICA$
'levels path ,graphics path, music path
Global PUNTEGGI$
'scores path
Global SEMITONO#
'semitone multiply/divide factor
Global ALTEZZAFONT,BANCODELLIVELLO,BANCODELMODULOMED,BANCODELMOTIVODIFONDO
'font height, level bank, med module bank, background motive bank
Global BANCOTEMPORANEO,_BARRE,COMPORTAMENTODEINEMICI
'temporary bank, bars, enemy behaviour
Global DISTANZADELMATTONCINOPIUVICINOALPAPERO,_BARRABLOCCATA,BOINGINCAMPO
'nearest to duck brick distance, locked bar, in game boings
Global BONUS,C0LLA,C0LORIDELLOSCHERMOMENOUNO,DURATADELLARIGA
'bonus, glue, screen colours minus one, row time duration
Global DURATADELMOTIVODIFONDO,EFFETTISONORICARICATI,FONTEDICARATTERI
'background motive duration, sound FXs loaded, selected chars font number
Global GRADIPAPEROALIENO,GUANOINCAMPO,GUANOMOLLATO,IMMAGINEGUANO,IMMAGINELASER
'alien duck degrees ,guano activated, guano dropped, guano image,
' laser beam image
Global IMMAGINEPALLINA,IMMAGINEPAPERO,IMMAGINEPAPEROALIENO,IMMAGINERAGGIOLASER
'ball image, duck image, alien duck image, laser ray image
Global IMMAGINERUBAPALLINA,IMMAGINEPROIETTILENEMICIUNO,IMMAGINIBOING
'ballthief image, enemies one bullet image, boing images
Global IMMAGINIBOINGMORTALE,IMMAGINIESPLOSIONEMATTONCINO,IMMAGINIGUANO
'killer boing images, brick explosion images,guano images
Global IMMAGININEMICOUNO,IMMAGINIPAPERO,IMMAGINIPROIETTILENEMICIUNO
'enemy one images ,duck images, enemy one bullet images
Global IMMAGINERIGADUE,IMMAGINERIGATRE,IMMAGINERIGAUNO,IMMAGINIRUBAPALLINA
'row type two images, row type three image, row type one image
' ballthief images
Global LARGHEZZAPANNELLO,LASER,LIVELLO,LUNGHEZZADELLABARRA
'panel width, laser, level, bar width
Global LUNGHEZZADELLABARRACAMBIATA,MASSIMOBOINGINCAMPO
'changed bar width, in game boings maximum
Global MASSIMOCOMPORTAMENTIDEINEMICI,MASSIMOMATTONCINIDARIDISEGNARE
'enemies behavioures maximum, bricks to be redrawed maximum
Global MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO,MASSIMONEMICIUNOINCAMPO
'in game bonus brick maximum, in game enemies one maximum
Global MASSIMOPALLINEINCAMPO,MATTONCINI,MATTONCINIDIPOTENZIAMENTO
'in game balls maximum, in game bricks, bonus bricks number
Global MATTONCINIDIPOTENZIAMENTOCOLORATI,MATTONCINIRIMASTI
'coloured bonus bricks, bricks left
Global MATTONCINODATROVAREPERILPAPERO,MATTONCINOPERILPAPERO,M0DULOMEDCARICATO
'brick to find for the duck, brick for the duck, med module loaded
Global MOSTRASOLOILPUNTEGGIOMASSIMO,MOTIVODIFONDOCARICATO,OGGETTOBOING
'show only the top score, background motive loaded, first boing object
Global OGGETTOCENTRODELLABARRA,OGGCETTOGUANO,OGGETTOLASER,OGGETTOLATIDELLABARRA
'bar centre object, guano object, laser beam object, sides of the bar object
Global OGGETTOMATTONCINODIPOTENZIAMENTO,OGGETTONEMICOUNO,OGGETTOPALLINA
'first bonus brick object, first enemy one object, first ball object
Global OGGETTOPAPERO,OGGETTOPAPEROALIENO,OGGETTOPROIETTILENEMICOUNO
'duck object, alien duck object, first enemy one bullet object
Global OGGETTORAGGIOLASER,OGGETTORIGA,OGGETTORUBAPALLINA
'laser ray object, row object, ballthief object
Global PALLINAPRESADALRUBAPALLINA,PALLINASCELTADALRUBAPALLINA
'ball taken by the ballthief, ball choosen by the ball thief, balls left
Global PALLINEINCAMPO,_PAPEROALIENO,_PAPEROALIENOINCAMPO,_PAPEROINCAMPO
'in game balls counter, alien duck status, in game alien duck, in game duck
Global POSIZIONE,PUNTEGGIO,PUNTEGGIOMASSIMO,RAGGIOLASERRIFLESSO
'score position, score, maximum score, reflected laser ray
Global RAGGIOLASERSPARATO,RIGA,RIMBALZODELLEPALLINESUIMATTONCINI,RITARDOBOING
'laser ray fired, row status, balls bounce against bricks status, boing delay
Global RITARDOPAPERO,RITARDODELGIOCO
'duck delay, game delay
Global RITARDODELLARIPETIZIONEDELSUONODELLAPALLINARUBATA
'ball taken sound repeat delay
Global RITARDODELLENTRATAINCAMPODEIBOING
'in game boing appearition time delay
Global RITARDODELLENTRATAINCAMPODELPAPEROALIENO
'in game alien duck appearition time delay
Global RITARDODELLENTRATAINCAMPODELRUBAPALLINA
'in game ballthief appearition time delay
Global RITARDODELLENTRATAINCAMPODEINEMICI,RITARDODEINEMICIUNO
'in game enemies appearition time delay, in game enemies one delay
Global RUBAPALLINACOLPITO,TASTO,TASTOGRIGIO,TASTOSCANSITO
'ballthief hitted, key, grey key, scanned key
Global TEMP0TRASCORSODIGIOCO,T0GLILARIGA,VOCE,XBARRA,XFINALERIGA,XGUANO,XLASER
'game time spent, remove the row, voice, bar X coord, row ending X, guano X
' coord, laser beam X coord
Global XPANNELLO,XPAPERO,XPAPEROALIENO,XRIGA,XRUBAPALLINA,YBARRA,YGUANO,YLASER
'panel X coord, duck X coord, alien duck X coord, row X coord, ballthief X
' coord, bar Y coord, guano Y coord, laser beam Y coord
Global YPAPERO,YPAPEROALIENO,YRUBAPALLINA
'duck Y coord, alien duck Y coord, ballthief Y coord
Global NOMEDELGIOCATORE$(),LIVELLOINCUIILGIOCATOREHAFINITOILGIOCO$()
'player name,player latest level
Global PUNTEGGIODELGIOCATORE$()
'player score
Global DELTAXPALLINA#(),DELTAXPROIETTILENEMICOUNO#(),DELTAYPALLINA#()
'ball X movement, enemy one bullet X movement, ball Y movement
Global DELTAYPROIETTILENEMICOUNO#(),VELOCITADELLAPALLINA#(),XPALLINA#()
'enemy one bullet Y movement, ball velocity, ball X coord
Global YPALLINA#()
'ball Y coord
Global BOING(),BOINGMORTALE(),C0LORE(),DURATADELLARIGA()
'boing status, killer boing status, color, row time duration
Global DURATADELRIDISEGNODELMATTONCINO(),ESPLOSIONEMATTONCINO()
'brick redrawing time duration, brick explosion
Global IMMAGINEBOING(),IMMAGINEBOINGMORTALE(),IMMAGINEESPLOSIONEMATTONCINO()
'boing image, killer boing image, brick explosion image
Global IMMAGINENEMICOUNO(),IMMAGINEPAPERO(),IMMAGINEPAPEROALIENO()
'enemy one image, duck image, alien duck image
Global IMMAGINERUBAPALLINA(),INGOMBRODELLABARRA()
'ballthief image ,bar side width
Global LAPALLINAERIMASTAINCOLLATAALLABARRA(),LAPALLINAHACOLPITOLABARRA()
'ball glued to the bar, ball has hitted the bar
Global LAPALLINAHARIMBALZATOSUUNBORDODELLABARRA(),MATTONCINO()
'ball has hitted a bar side, brick
Global MATTONCINODARIDISEGNARE(),MATTONCINODIPOTENZIAMENTO(),NEMICOUNO()
'brick to be redrawn, bonus brick, enemy one
Global PALLINA(),PROIETTILENEMICOUNO(),ROTAZIONEBOING(),ROTAZIONENEMICOUNO()
'ball, enemy one bullet, enemy one rotation, boing rotation
Global X0ZONA(),XBOING(),XCOLLA()
'brick X coord, boing X coord, ball glued X coord
Global XDIPARTENZANEMICOUNO(),XMATTONCINODIPOTENZIAMENTO(),XNEMICOUNO()
'enemy one start X, bonus brick X coord, enemy one X coord
Global XPROIETTILENEMICOUNO(),Y0ZONA(),YBOING(),YCOLLA()
'enemy one bullet X coord, brick Y coord, boing Y coord, ball glued Y coord
Global YMATTONCINODIPOTENZIAMENTO(),YNEMICOUNO(),YPROIETTILENEMICOUNO()
'bonus brick Y coord, enemy one Y coord, enemy one bullet Y coord
Proc INDIVIDUALAPOSIZIONEDELPROGRAMMA
Proc IMPOSTAIPERCORSIDEIFILE
Proc IMPOSTALOSCHERMO
If MATTONCINIDIPOTENZIAMENTOCOLORATI=1
OGGETTI$=OGGETTICOLORATI$
Else
OGGETTI$=OGGETTISTANDARD$
End If
Proc CARICAGLIOGGETTI
Proc IMPOSTAGLIOGGETTI
Proc IMPOSTAICOLORI
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE["",0,0,0,-1]
Proc TROVAILFONTDATA70
Proc DISSOLVENZADEICOLORI[$FFF,1,1]
Hide
Proc IMPOSTALARCOBALENO
Proc CARICAILLIVELLO
Proc DABANCOAVARIABILI
Proc METTIILPANNELLO
Proc CREALEIMMAGINIPERLERIGHE
Proc IMPOSTALEZONEDEIMATTONCINI
Proc METTIECONTAIMATTONCINI
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE["",0,0,0,-1]
Screen Swap
Proc DISSOLVENZADEICOLORI[$FFF,1,2]
Proc IMPOSTALINGOMBRODELLABARRA
Proc CARICAIPUNTEGGIDEICENTOMIGLIORIGIOCATORI
Proc IMPOSTALADURATADELLERIGHE
Proc IMPOSTAILAMPEGGI
TESTOINTRODUTTIVO$="Press the M key if you want..."+ACAPO$
TESTOINTRODUTTIVO$=TESTOINTRODUTTIVO$+"...to listen to the music only,"+ACAPO$
TESTOINTRODUTTIVO$=TESTOINTRODUTTIVO$+"or press the S key if you want..."+ACAPO$
TESTOINTRODUTTIVO$=TESTOINTRODUTTIVO$+"...to listen to the sound fxs only."
Repeat
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[TESTOINTRODUTTIVO$,20,22,1,500]
Until TASTO=Asc("M") or TASTO=Asc("m") or TASTO=Asc("S") or TASTO=Asc("s")
If TASTO=Asc("M") or TASTO=Asc("m")
Proc CARICAUNMODULOMED
If M0DULOMEDCARICATO=VERO
Proc SUONAILMODULOMED
EFFETTISONORICARICATI=0
Else
Proc CARICAGLIEFFETTISONORI
End If
End If
If TASTO=Asc("S") or TASTO=Asc("s")
Proc CARICAGLIEFFETTISONORI
End If
Repeat
Proc MOSTRAICREDITI
Proc MOSTRAIPUNTEGGIDEICENTOMIGLIORIGIOCATORI
Proc MOSTRALEOPZIONIDIGIOCO
TESTOINTRODUTTIVO$="Press left mouse button to play."+ACAPO$
TESTOINTRODUTTIVO$=TESTOINTRODUTTIVO$+"Press right mouse button to exit."
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[TESTOINTRODUTTIVO$,20,21,1,500]
If TASTO=-1
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1]
_BARRE=5
C0LLA=FALSO
DISTANZADELMATTONCINOPIUVICINOALPAPERO=1000
DURATADELLARIGA=-1
INIZIODELLIVELLO=VERO
LASER=0
LIVELLO=0
LUNGHEZZADELLABARRA=1
LUNGHEZZADELLABARRACAMBIATA=LUNGHEZZADELLABARRA
PALLINASCELTATADALRUBAPALLINA=MASSIMOPALLINEINCAMPO
PALLINAPRESADALRUBAPALLINA=MASSIMOPALLINEINCAMPO
PALLINEINCAMPO=1
_PAPEROINCAMPO=FALSO
PUNTEGGIO=0
RIGA=0
RIMBALZODELLEPALLINESUIMATTONCINI=VERO
TEMP0TRASCORSODIGIOCO=0
XBARRA=X Screen(X Mouse)
YBARRA=247
If PRIMAPARTITA=FALSO or LIVELLO>0
Proc CANCELLAIMATTONCINI
Proc CARICAILLIVELLO
Proc DABANCOAVARIABILI
Proc METTIECONTAIMATTONCINI
If M0DULOMEDCARICATO=VERO
Proc CARICAUNMODULOMED
Proc SUONAILMODULOMED
End If
Else
PRIMAPARTITA=FALSO
End If
Repeat
Proc IMPOSTAILRITARDODELLENTRATAINCAMPODELPAPEROALIENO
Proc IMPOSTAILRITARDODELLENTRATAINCAMPODELRUBAPALLINA
Proc AGGIORNAILPANNELLO
RITARDOMASSIMODELLABARRA=0
If INIZIODELLIVELLO=VERO
TESTOINIZIOGIOCO$="Get ready for level"+Str$(LIVELLO)+"!"+ACAPO$
TESTOINIZIOGIOCO$=TESTOINIZIOGIOCO$+"Press a (mouse) key to begin..."
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE["",0,0,0,-1]
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[TESTOINIZIOGIOCO$,22,20,1,500]
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1]
Proc IMPOSTAIBOING
If EFFETTISONORICARICATI=2
Sam Play VOCE,1 : Proc VOCESEGUENTE
Else If EFFETTISONORICARICATI=1
Bell 20
End If
INIZIODELLIVELLO=FALSO
End If
For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
If PALLINA<PALLINEINCAMPO
PALLINA(PALLINA)=VERO
XPALLINA#(PALLINA)=XBARRA+PALLINA*7-14
YPALLINA#(PALLINA)=YBARRA-4
Else
PALLINA(PALLINA)=FALSO
Proc CANCELLALAPALLINA[PALLINA]
End If
Next PALLINA
Autoback 1
Timer=DURATADELMOTIVODIFONDO+50*15
Repeat
TASTOCLICCATODELTOPO=Mouse Click
If RITARDODELLABARRA=0 or RITARDOMASSIMODELLABARRA=0
XBARRA=X Screen(X Mouse)
End If
If RITARDOMASSIMODELLABARRA>0
Add RITARDODELLABARRA,1,0 To RITARDOMASSIMODELLABARRA
End If
Proc MOSTRALABARRA
Proc CAMBIALALUNGHEZZADELLABARRA
Proc LIMITAIMOVIMENTIDELLABARRA
For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
If PALLINA(PALLINA)=VERO
XPALLINA#(PALLINA)=XBARRA+PALLINA*7-14
YPALLINA#(PALLINA)=YBARRA-4
Bob OGGETTOPALLINA+PALLINA,Int(XPALLINA#(PALLINA)),Int(YPALLINA#(PALLINA)),IMMAGINEPALLINA
End If
Next PALLINA
Proc MOSTRAILLASER
If T0GLILARIGA>0
If XRIGA>0
Dec XRIGA
End If
Proc MOSTRALARIGA[T0GLILARIGA]
Else
If RIGA>0
If XRIGA<XFINALERIGA
Inc XRIGA
Proc MOSTRALARIGA[RIGA]
End If
End If
End If
Proc MATTONCINIDIPOTENZIAMENTO[0,0]
Proc BOINGINCAMPO
If _PAPEROINCAMPO=VERO
Proc _PAPEROINCAMPO
End If
If RITARDODELLENTRATAINCAMPODELPAPEROALIENO=0
Proc _PAPEROALIENOINCAMPO
Proc MOLLAILGUANO
Else
Dec RITARDODELLENTRATAINCAMPODELPAPEROALIENO
End If
If RITARDODELLENTRATAINCAMPODELRUBAPALLINA=1
ENTRATAINCAMPODELRUBAPALLINA=Rnd(2)>1
End If
If RITARDODELLENTRATAINCAMPODELRUBAPALLINA=0
If ENTRATAINCAMPODELRUBAPALLINA=VERO
Proc RUBAPALLINAINCAMPO
End If
Else
Dec RITARDODELLENTRATAINCAMPODELRUBAPALLINA
End If
If RITARDODELLENTRATAINCAMPODEINEMICI=0
If LASER>0
Proc NEMICIINCAMPO
Else
Proc CANCELLAINEMICIUNO : RITARDODELLENTRATAINCAMPODEINEMICI=-3000
End If
Else If RITARDODELLENTRATAINCAMPODEINEMICI<0
If RITARDODELLENTRATAINCAMPODEINEMICI=-1
Proc IMPOSTAINEMICIUNO
End If
Inc RITARDODELLENTRATAINCAMPODEINEMICI
End If
If COMPORTAMENTODEINEMICI=0
If RITARDODELLENTRATAINCAMPODEINEMICI=0
Proc ILNEMICOUNOHASPARATO[0]
Else
If PROIETTILENEMICOUNO(0)>0
Proc ILNEMICOUNOHASPARATO[0]
End If
End If
End If
Bob Update
TASTOPREMUTO$=Lower$(Inkey$)
TASTOGRIGIO=Key Shift
TASTOSCANSITO=Scancode
Exit If TASTOPREMUTO$=Chr$(27)
If TASTOPREMUTO$="p"
Proc METTIILGIOCOINPAUSA
End If
If TASTOGRIGIO=4
If TASTOSCANSITO=80 : Rem F1 key
Add LUNGHEZZADELLABARRACAMBIATA,1,0 To 2
Else If TASTOSCANSITO=81 : Rem F2 key
Add PALLINEINCAMPO,1,1 To MASSIMOPALLINEINCAMPO
For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
If PALLINA<PALLINEINCAMPO
PALLINA(PALLINA)=VERO
Else
PALLINA(PALLINA)=FALSO
Proc CANCELLALAPALLINA[PALLINA]
End If
Next PALLINA
Else If TASTOSCANSITO=82 : Rem F3 key
If LASER=-1
LASER=1
Else If LASER=1
LASER=2
Else If LASER=2
LASER=3
Else If LASER=3
LASER=0
End If
Else If TASTOSCANSITO=83 : Rem F4 key
If RIGA>0 and T0GLILARIGA=0
T0GLILARIGA=RIGA
End If
Add RIGA,1,0 To 3
Else If TASTOSCANSITO=84 : Rem F5 Key
RITARDODELLENTRATAINCAMPODELRUBAPALLINA=0
ENTRATAINCAMPODELRUBAPALLINA=VERO
Else If TASTOSCANSITO=85 : Rem F6 Key
RITARDODELLENTRATAINCAMPODEINEMICI=-1
Else If TASTOPREMUTO$=" "
Proc MATTONCINIDIPOTENZIAMENTO[-Rnd(28)-1,0]
End If
End If
If MOTIVODIFONDOCARICATO=1
If Timer-DURATADELMOTIVODIFONDO>50*15
Proc SUONAILMOTIVODIFONDO : DURATADELMOTIVODIFONDO=Timer
End If
End If
Until TASTOCLICCATODELTOPO>0
Proc IMPOSTALEPALLINE
DURATADELGIOCO=0
Repeat
TASTOCLICCATODELTOPO=Mouse Click
If TASTOCLICCATODELTOPO=1
For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
LAPALLINAERIMASTAINCOLLATAALLABARRA(PALLINA)=FALSO
Next PALLINA
Else If TASTOCLICCATODELTOPO=2
Proc HAISPARATOILRAGGIOLASER
End If
If _BARRABLOCCATA>0
If _BARRABLOCCATA=1
X Mouse=X Hard(Int(XBARRA))
End If
Dec _BARRABLOCCATA
Else
If RITARDODELLABARRA=0 or RITARDOMASSIMODELLABARRA=0
XBARRA=X Screen(X Mouse)
End If
If RITARDOMASSIMODELLABARRA>0
Add RITARDODELLABARRA,1,0 To RITARDOMASSIMODELLABARRA
End If
End If
Proc MOSTRALABARRA
Proc CAMBIALALUNGHEZZADELLABARRA
Proc LIMITAIMOVIMENTIDELLABARRA
For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
If PALLINA(PALLINA)=VERO
If LAPALLINAERIMASTAINCOLLATAALLABARRA(PALLINA)=VERO
XPALLINA#(PALLINA)=XBARRA-XCOLLA(PALLINA)
YPALLINA#(PALLINA)=YBARRA-YCOLLA(PALLINA)
Else
XPALLINA#(PALLINA)=XPALLINA#(PALLINA)+DELTAXPALLINA#(PALLINA)
YPALLINA#(PALLINA)=YPALLINA#(PALLINA)+DELTAYPALLINA#(PALLINA)
If TILTPALLINA=VERO
XPALLINA#(PALLINA)=XPALLINA#(PALLINA)+XTILTPALLINA
YPALLINA#(PALLINA)=YPALLINA#(PALLINA)+YTILTPALLINA
End If
If XPALLINA#(PALLINA)>XPANNELLO-4
XPALLINA#(PALLINA)=XPANNELLO-4
DELTAXPALLINA#(PALLINA)=-DELTAXPALLINA#(PALLINA)
If EFFETTISONORICARICATI=2
Sam Play VOCE,2,8363*2 : Proc VOCESEGUENTE
Else If EFFETTISONORICARICATI=1
Boom
End If
Else If XPALLINA#(PALLINA)<3
XPALLINA#(PALLINA)=3
DELTAXPALLINA#(PALLINA)=-DELTAXPALLINA#(PALLINA)
If EFFETTISONORICARICATI=2
Sam Play VOCE,2,8363*2 : Proc VOCESEGUENTE
Else If EFFETTISONORICARICATI=1
Boom
End If
Else If YPALLINA#(PALLINA)<3
YPALLINA#(PALLINA)=3
DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA)
If EFFETTISONORICARICATI=2
Sam Play VOCE,2,8363*2 : Proc VOCESEGUENTE
Else If EFFETTISONORICARICATI=1
Boom
End If
End If
If TILTPALLINA=VERO
Add XTILTPALLINA,-Sgn(XTILTPALLINA)
If XTILTPALLINA>0
XTILTPALLINA=Max(XTILTPALLINA,0)
Else If XTILTPALLINA<0
XTILTPALLINA=Min(XTILTPALLINA,0)
End If
Add YTILTPALLINA,-Sgn(YTILTPALLINA)
If YTILTPALLINA>0
YTILTPALLINA=Max(YTILTPALLINA,0)
Else If YTILTPALLINA<0
YTILTPALLINA=Min(YTILTPALLINA,0)
End If
Screen Display 0,128+XTILTPALLINA,44+YTILTPALLINA,320,256
If XTILTPALLINA=0 and YTILTPALLINA=0
TILTPALLINA=FALSO
End If
Else
If TASTOPREMUTO$=" "
XTILTPALLINA=Rnd(32)-16 : YTILTPALLINA=Rnd(32)-16 : TILTPALLINA=VERO
End If
End If
End If
Bob OGGETTOPALLINA+PALLINA,Int(XPALLINA#(PALLINA)),Int(YPALLINA#(PALLINA)),IMMAGINEPALLINA
If LAPALLINAERIMASTAINCOLLATAALLABARRA(PALLINA)=FALSO
Proc MATTONCINOCOLPITODALLAPALLINA[PALLINA]
Proc LAPALLINAHACOLPITOLABARRA[PALLINA]
Proc LAPALLINAHACOLPITOLARIGA[PALLINA]
Proc LAPALLINAEUSCITADALCAMPODIGIOCO[PALLINA]
End If
End If
Next PALLINA
Exit If TASTOPREMUTO$=Chr$(27)
TASTOPREMUTO$=Lower$(Inkey$)
Exit If TASTOPREMUTO$=Chr$(27)
If TASTOPREMUTO$="p"
Proc METTIILGIOCOINPAUSA
End If
Proc MOSTRAILLASER
Proc MOSTRAILRAGGIOLASER
TASTOGRIGIO=Key Shift
SHIFTSINISTRO=Btst(0,TASTOGRIGIO)
SHIFTDESTRO=Btst(1,TASTOGRIGIO)
TASTOMAIUSCOLE=Btst(2,TASTOGRIGIO)
TASTISHIFTPREMUTI=SHIFTSINISTRO or SHIFTDESTRO or TASTOMAIUSCOLE
If TASTISHIFTPREMUTI=FALSO
Proc MATTONCINOCOLPITODALRAGGIOLASER
End If
Proc LABARRAESTATACOLPITADALRAGGIOLASERRIFLESSO
If T0GLILARIGA>0
If XRIGA>0
Dec XRIGA : Proc MOSTRALARIGA[T0GLILARIGA]
Else
Proc T0GLILARIGA : DURATADELLARIGA=-1
End If
Else
If RIGA>0
If XRIGA<XFINALERIGA
Inc XRIGA : Proc MOSTRALARIGA[RIGA]
Else
If DURATADELLARIGA=-1
DURATADELLARIGA=DURATADELLARIGA(RIGA-1)
Else If DURATADELLARIGA=0
T0GLILARIGA=RIGA : RIGA=0
Else
Dec DURATADELLARIGA
End If
End If
End If
End If
Proc MATTONCINIDIPOTENZIAMENTO[0,0]
Proc BOINGINCAMPO
If _PAPEROINCAMPO=VERO
Proc _PAPEROINCAMPO
End If
If RITARDODELLENTRATAINCAMPODELPAPEROALIENO=0
Proc _PAPEROALIENOINCAMPO
Proc MOLLAILGUANO
Else
Dec RITARDODELLENTRATAINCAMPODELPAPEROALIENO
End If
If RITARDODELLENTRATAINCAMPODELRUBAPALLINA=1
ENTRATAINCAMPODELRUBAPALLINA=Rnd(2)>1
End If
If RITARDODELLENTRATAINCAMPODELRUBAPALLINA=0
If ENTRATAINCAMPODELRUBAPALLINA=VERO
Proc RUBAPALLINAINCAMPO
End If
Else
Dec RITARDODELLENTRATAINCAMPODELRUBAPALLINA
End If
If RITARDODELLENTRATAINCAMPODEINEMICI=0
If LASER>0
Proc NEMICIINCAMPO
Else
Proc CANCELLAINEMICIUNO : RITARDODELLENTRATAINCAMPODEINEMICI=-3000
End If
Else If RITARDODELLENTRATAINCAMPODEINEMICI<0
If RITARDODELLENTRATAINCAMPODEINEMICI=-1
Proc IMPOSTAINEMICIUNO
End If
Inc RITARDODELLENTRATAINCAMPODEINEMICI
End If
If COMPORTAMENTODEINEMICI=0 and NEMICOUNO(0)>0
If RITARDODELLENTRATAINCAMPODEINEMICI=0
Proc ILNEMICOUNOHASPARATO[0]
Else
If PROIETTILENEMICOUNO(0)>0
Proc ILNEMICOUNOHASPARATO[0]
End If
End If
End If
Bob Update
For MATTONCINODARIDISEGNARE=0 To MASSIMOMATTONCINIDARIDISEGNARE-1
MATTONCINO=MATTONCINODARIDISEGNARE(MATTONCINODARIDISEGNARE)
If MATTONCINO>0
X0MATTONCINO=X0ZONA(MATTONCINO-1)
Y0MATTONCINO=Y0ZONA(MATTONCINO-1)
If ESPLOSIONEMATTONCINO(MATTONCINO-1)>0
IMMAGINEESPLOSIONEMATTONCINO=IMMAGINEESPLOSIONEMATTONCINO(ESPLOSIONEMATTONCINO(MATTONCINO-1))
Ink 0 : Bar X0MATTONCINO,Y0MATTONCINO To X0MATTONCINO+19,Y0MATTONCINO+9
Paste Bob X0MATTONCINO,Y0MATTONCINO,IMMAGINEESPLOSIONEMATTONCINO
Inc ESPLOSIONEMATTONCINO(MATTONCINO-1)
If ESPLOSIONEMATTONCINO(MATTONCINO-1)=IMMAGINIESPLOSIONEMATTONCINO
ESPLOSIONEMATTONCINO(MATTONCINO-1)=0
End If
Else
If DURATADELRIDISEGNODELMATTONCINO(MATTONCINODARIDISEGNARE)>0
TIPODIMATTONCINO=MATTONCINO(MATTONCINO-1)
If TIPODIMATTONCINO=0
Ink 0 : Bar X0MATTONCINO,Y0MATTONCINO To X0MATTONCINO+19,Y0MATTONCINO+9
Else If TIPODIMATTONCINO>0
Paste Bob X0MATTONCINO,Y0MATTONCINO,82+TIPODIMATTONCINO
End If
Dec DURATADELRIDISEGNODELMATTONCINO(MATTONCINODARIDISEGNARE)
Else
MATTONCINODARIDISEGNARE(MATTONCINODARIDISEGNARE)=0
If TIPODIMATTONCINO=0 and MATTONCINO(MATTONCINO-1)=0
Ink 0 : Bar X0MATTONCINO,Y0MATTONCINO To X0MATTONCINO+19,Y0MATTONCINO+9
MATTONCINO(MATTONCINO-1)=-1
End If
End If
End If
End If
Next MATTONCINODARIDISEGNARE
If BONUS>0
If RITARDODELDECREMENTODELBONUS=9
RITARDODELDECREMENTODELBONUS=0 : Dec BONUS : Proc MOSTRAILBONUS[FALSO]
Else
Inc RITARDODELDECREMENTODELBONUS
End If
End If
Exit If MATTONCINI=0
If RITARDODELGIOCO=1
Wait Vbl
End If
Inc DURATADELGIOCO
If MOTIVODIFONDOCARICATO=1
If Timer-DURATADELMOTIVODIFONDO>50*15
Proc SUONAILMOTIVODIFONDO : DURATADELMOTIVODIFONDO=Timer
End If
End If
Until PALLINEINCAMPO=0
Proc ANNULLAILRIDISEGNODEIMATTONCINI
Proc CANCELLALABARRA
Proc CANCELLALEPALLINE
Proc CANCELLAIMATTONCINIDIPOTENZIAMENTO[FALSO]
Proc T0GLIILLASER
Proc CANCELLAILRAGGIOLASER
Proc CANCELLAILRUBAPALLINA
Proc CANCELLAILPAPERO : _PAPEROINCAMPO=FALSO
Proc CANCELLAILPAPEROALIENO
Proc CANCELLAILGUANO
Proc CANCELLAIBOING
Proc CANCELLAINEMICIUNO
Proc CANCELLAIPROIETTILIDEINEMICIUNO
Proc CANCELLALARIGA
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE["",0,0,0,-1]
Exit If TASTOPREMUTO$=Chr$(27)
Add TEMP0TRASCORSODIGIOCO,DURATADELGIOCO
If MATTONCINI=0
Proc AGGIUNGIALPUNTEGGIOILBONUS
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1]
Proc AGGIORNAILPANNELLO
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE["",0,0,0,-1]
Proc AGGIUNGIALPUNTEGGIOILBONUSPERIMATTONCINIRIMASTI
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1]
Proc AGGIORNAILPANNELLO
DISTANZADELMATTONCINOPIUVICINOALPAPERO=1000
Inc LIVELLO
INIZIODELLIVELLO=VERO
End If
If PALLINEINCAMPO>0
Proc CANCELLAIMATTONCINI
Proc CANCELLAIMATTONCINIDIPOTENZIAMENTO[VERO]
Proc CARICAILLIVELLO
Exit If LIVELLO<0
Proc DABANCOAVARIABILI
Proc METTIECONTAIMATTONCINI
If M0DULOMEDCARICATO=VERO
Proc CARICAUNMODULOMED
Proc SUONAILMODULOMED
End If
Else
C0LLA=FALSO
RIMBALZODELLEPALLINESUIMATTONCINI=VERO
If LASER>0
Dec LASER
End If
If _BARRE>0
Dec _BARRE : PALLINEINCAMPO=1
End If
If EFFETTISONORICARICATI=2
Sam Play VOCE,5 : Proc VOCESEGUENTE
Else If EFFETTISONORICARICATI=1
Boom
End If
End If
Until _BARRE=0
Autoback 0
If TASTOPREMUTO$<>Chr$(27)
Proc AGGIUNGIALPUNTEGGIOILBONUSPERLEBARRERIMASTEAFINEGIOCO
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1]
Proc AGGIORNAILPANNELLO
Proc FAIINSERIREALGIOCATOREILSUOPUNTEGGIO
Proc SALVAIPUNTEGGIDEICENTOMIGLIORIGIOCATORI
Proc CARICAIPUNTEGGIDEICENTOMIGLIORIGIOCATORI
Proc MOSTRAILTEMPOTRASCORSODIGIOCOESALUTAILGIOCATORE
End If
End If
Until TASTO=-2
If M0DULOMEDCARICATO=VERO Then Proc FERMAILMODULOMED
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1]
Flash Off : Proc DISSOLVENZADEICOLORI[0,1,1]
Autoback 1
Proc T0GLIIMATTONCINI
Proc T0GLIILPANNELLO
Proc T0GLILARCOBALENO
Show : Rainbow Del 0 : Screen Close 0 : Erase All : End
Procedure AGGIORNAILPANNELLO
'update the panel
Proc MOSTRALEBARRERIMASTE
Proc MOSTRAILLIVELLO
Proc MOSTRALAPOSIZIONE
Proc MOSTRAILPUNTEGGIO[VERO]
Proc MOSTRAILPUNTEGGIOMASSIMO[VERO]
Proc MOSTRAILBONUS[VERO]
End Proc
Procedure AGGIUNGIALPUNTEGGIOILBONUS
'add the bonus to the score
If BONUS>0
BONUS$="I am going to add the bonus points..."+ACAPO$
BONUS$=BONUS$+"...to your game points."+ACAPO$
BONUS$=BONUS$+"Wait for a moment, please..."
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[BONUS$,22,20,1,-1]
Repeat
TASTOPREMUTO$=Lower$(Inkey$)
If TASTOPREMUTO$="p"
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1]
Proc METTIILGIOCOINPAUSA
End If
Dec BONUS : Proc MOSTRAILBONUS[FALSO]
Inc PUNTEGGIO : Proc MOSTRAILPUNTEGGIO[FALSO]
Until BONUS=0
Else
TASTOPREMUTO$=Lower$(Inkey$)
If TASTOPREMUTO$="p"
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1]
Proc METTIILGIOCOINPAUSA
End If
BONUS$="There are no bonus points..."+ACAPO$
BONUS$=BONUS$+"...to add to your game points."+ACAPO$
BONUS$=BONUS$+"I am sorry..."+ACAPO$
BONUS$=BONUS$+"...I wish a better luck for the next level."+ACAPO$
BONUS$=BONUS$+"Press a (mouse) key to continue..."
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[BONUS$,21,20,1,1000]
End If
End Proc
Procedure AGGIUNGIALPUNTEGGIOILBONUSPERIMATTONCINIRIMASTI
'add 2 points to the score for every brick left
If MATTONCINIRIMASTI>0
BONUS$="I am going to add the bricks left bonus points..."+ACAPO$
BONUS$=BONUS$+"...to your game points,"+ACAPO$
BONUS$=BONUS$+"adding two points for each brick left."+ACAPO$
BONUS$=BONUS$+"There are"+Str$(MATTONCINIRIMASTI)+" bricks left..."+ACAPO$
BONUS$=BONUS$+"...wait for a moment, please..."
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[BONUS$,22,20,1,-1]
Repeat
TASTOPREMUTO$=Lower$(Inkey$)
If TASTOPREMUTO$="p"
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1]
Proc METTIILGIOCOINPAUSA
End If
Dec MATTONCINIRIMASTI
Add PUNTEGGIO,2 : Proc MOSTRAILPUNTEGGIO[VERO]
Until MATTONCINIRIMASTI=0
Else
TASTOPREMUTO$=Lower$(Inkey$)
If TASTOPREMUTO$="p"
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1]
Proc METTIILGIOCOINPAUSA
End If
BONUS$="There are no bars left bonus points..."+ACAPO$
BONUS$=BONUS$+"...to add to your game points."+ACAPO$
BONUS$=BONUS$+"I am sorry..."+ACAPO$
BONUS$=BONUS$+"...I wish a better luck for the next level."+ACAPO$
BONUS$=BONUS$+"Press a (mouse) key to continue..."
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[BONUS$,21,20,1,1000]
End If
End Proc
Procedure AGGIUNGIALPUNTEGGIOILBONUSPERLEBARRERIMASTEAFINEGIOCO
'add 500 points to the score for every ball left at the end of the game
If _BARRE>0
Repeat
BONUS$="I am going to add the bars left bonus points..."+ACAPO$
BONUS$=BONUS$+"...to your game points,"+ACAPO$
BONUS$=BONUS$+"adding 500 points for each ball left."+ACAPO$
BONUS$=BONUS$+"There are"+Str$(_BARRE)+" ball(s) left..."+ACAPO$
BONUS$=BONUS$+"...wait for a moment, please..."
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[BONUS$,22,20,1,-1]
TASTOPREMUTO$=Lower$(Inkey$)
If TASTOPREMUTO$="p"
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1]
Proc METTIILGIOCOINPAUSA
End If
Dec _BARRE : Proc MOSTRALEBARRERIMASTE
Add PUNTEGGIO,500 : Proc MOSTRAILPUNTEGGIO[VERO]
Sam Play VOCE,2 : Proc VOCESEGUENTE
_ASPETTA[50]
Until _BARRE=0
Else
BONUS$="There are no balls left bonus points..."+ACAPO$
BONUS$=BONUS$+"...to add to your game points."+ACAPO$
BONUS$=BONUS$+"I am sorry..."+ACAPO$
BONUS$=BONUS$+"...I wish a better luck for the next game."+ACAPO$
BONUS$=BONUS$+"Press a (mouse) key to continue..."
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[BONUS$,21,20,1,1000]
End If
End Proc
Procedure ANNULLAILRIDISEGNODEIMATTONCINI
'stop the hitted bricks redrawing
For MATTONCINODARIDISEGNARE=0 To MASSIMOMATTONCINIDARIDISEGNARE-1
If ESPLOSIONEMATTONCINO(MATTONCINODARIDISEGNARE)>0
X0MATTONCINO=X0ZONA(MATTONCINODARIDISEGNARE)
Y0MATTONCINO=Y0ZONA(MATTONCINODARIDISEGNARE)
Ink 0 : Bar X0MATTONCINO,Y0MATTONCINO To X0MATTONCINO+19,Y0MATTONCINO+9
ESPLOSIONEMATTONCINO(MATTONCINODARIDISEGNARE)=0
Else
If MATTONCINODARIDISEGNARE(MATTONCINODARIDISEGNARE)>0
MATTONCINODARIDISEGNARE(MATTONCINODARIDISEGNARE)=0
End If
End If
Next MATTONCINODARIDISEGNARE
End Proc
Procedure _ASPETTA[TEMP0DAASPETTARE]
'wait for a (mouse or grey) key pressed:
' if time to wait (TEMP0DAASPETTARE) is less than zero exit immediately;
' if time to wait is equal to zero wait forever;
' if time to wait is grater than zero wait the specified time.
TASTO=0 : TASTOSCANSITO=0 : Timer=0
Repeat
TASTOPREMUTO$=Inkey$
TASTOGRIGIO=Key Shift
TASTOSCANSITO=Scancode
TASTOPREMUTODELTOPO=Mouse Key
If TASTOGRIGIO>0 and TASTOGRIGIO<>Key Shift
Add TASTO,TASTOGRIGIO*256 : Exit
End If
If TASTOPREMUTODELTOPO>0 Then TASTO=-TASTOPREMUTODELTOPO : Exit
If TASTOPREMUTO$<>"" Then TASTO=Asc(TASTOPREMUTO$) : Exit
If TEMP0DAASPETTARE>0 Then TEMP0TRASCORSO=Timer
If TEMP0DAASPETTARE<0 Then Pop Proc
Until TEMP0TRASCORSO>TEMP0DAASPETTARE
End Proc
Procedure BOINGINCAMPO
'manage the boings
For BOING=0 To MASSIMOBOINGINCAMPO-1
If BOING(BOING)>0
If RITARDOBOING=0
If BOINGMORTALE(BOING)=VERO
If BOING(BOING)<14
IMMAGINEBOINGMORTALE=BOING(BOING)-1
Else If BOING(BOING)>13 and BOING(BOING)<39
IMMAGINEBOINGMORTALE=13
Else
IMMAGINEBOINGMORTALE=BOING(BOING)-26
End If
Bob OGGETTOBOING+BOING,XBOING(BOING),YBOING(BOING),IMMAGINEBOINGMORTALE(IMMAGINEBOINGMORTALE)
Else
Bob OGGETTOBOING+BOING,XBOING(BOING),YBOING(BOING),IMMAGINEBOING(BOING(BOING)-1)
End If
Add XBOING(BOING),Rnd(4)-2
Proc LIMITI[XBOING(BOING),0,XFINALERIGA] : XBOING(BOING)=Param
Inc YBOING(BOING)
If BOINGMORTALE(BOING)=VERO
Add BOING(BOING),ROTAZIONEBOING(BOING),1 To 52
Else
Add BOING(BOING),ROTAZIONEBOING(BOING),1 To 8
End If
End If
Proc ILBOINGESTATOCOLPITO[BOING]
Proc ILBOINGEUSCITODALCAMPODIGIOCO[BOING]
Else If BOING(BOING)=0
XBOING(BOING)=Rnd(XFINALERIGA) : YBOING(BOING)=-9 : BOINGMORTALE=Rnd(1)
If BOINGMORTALE=1
BOING(BOING)=Rnd(51)+1 : BOINGMORTALE(BOING)=VERO
Else
BOING(BOING)=Rnd(7)+1 : BOINGMORTALE(BOING)=FALSO
End If
ROTAZIONEBOING(BOING)=Rnd(1)
If ROTAZIONEBOING(BOING)=0
ROTAZIONEBOING(BOING)=-1
End If
If EFFETTISONORICARICATI=2
Sam Play VOCE,10 : Proc VOCESEGUENTE
Else If EFFETTISONORICARICATI=1
Bell 60
End If
Else If BOING(BOING)<0
If BOING(BOING)=RITARDODELLENTRATAINCAMPODEIBOING
Proc CANCELLAILBOING[BOING] : Inc BOING(BOING)
Else
Inc BOING(BOING)
End If
End If
Next BOING
Add RITARDOBOING,1,0 To 3
End Proc
Procedure CAMBIALALUNGHEZZADELLABARRA
'change the bar size
If LUNGHEZZADELLABARRACAMBIATA<>LUNGHEZZADELLABARRA
If LUNGHEZZADELLABARRA=0
If LUNGHEZZADELLABARRACAMBIATA=1
Gosub LUNGHEZZADAZEROAUNO
End If
If LUNGHEZZADELLABARRACAMBIATA=2
Gosub LUNGHEZZADAZEROAUNO
Gosub LUNGHEZZADAUNOADUE
End If
Else If LUNGHEZZADELLABARRA=1
If LUNGHEZZADELLABARRACAMBIATA=0
Gosub LUNGHEZZADAUNOAZERO
End If
If LUNGHEZZADELLABARRACAMBIATA=2
Gosub LUNGHEZZADAUNOADUE
End If
Else If LUNGHEZZADELLABARRA=2
If LUNGHEZZADELLABARRACAMBIATA=0
Gosub LUNGHEZZADADUEAUNO
Gosub LUNGHEZZADAUNOAZERO
End If
If LUNGHEZZADELLABARRACAMBIATA=1
Gosub LUNGHEZZADADUEAUNO
End If
End If
End If
LUNGHEZZADELLABARRA=LUNGHEZZADELLABARRACAMBIATA
Pop Proc
LUNGHEZZADAZEROAUNO:
'from small to medium bar
For OGGETTO=45 To 41 Step -1
Bob OGGETTOCENTRODELLABARRA,Int(XBARRA),YBARRA,OGGETTO
Bob OGGETTOLATIDELLABARRA,Int(XBARRA),YBARRA,OGGETTO+5
Proc LIMITAIMOVIMENTIDELLABARRAMENTRESTACAMBIANDO[OGGETTO]
Bob Update
Next OGGETTO
Return
LUNGHEZZADAUNOADUE:
'from medium to large bar
For OGGETTO=13 To 26
Bob OGGETTOCENTRODELLABARRA,Int(XBARRA),YBARRA,OGGETTO
Bob OGGETTOLATIDELLABARRA,Int(XBARRA),YBARRA,OGGETTO+14
Proc LIMITAIMOVIMENTIDELLABARRAMENTRESTACAMBIANDO[OGGETTO]
Bob Update
Next OGGETTO
Return
LUNGHEZZADADUEAUNO:
'from large to medium bar
For OGGETTO=26 To 13 Step -1
Bob OGGETTOCENTRODELLABARRA,Int(XBARRA),YBARRA,OGGETTO
Bob OGGETTOLATIDELLABARRA,Int(XBARRA),YBARRA,OGGETTO+14
Proc LIMITAIMOVIMENTIDELLABARRAMENTRESTACAMBIANDO[OGGETTO]
Bob Update
Next OGGETTO
Return
LUNGHEZZADAUNOAZERO:
'from medium to small bar
For OGGETTO=41 To 45
Bob OGGETTOCENTRODELLABARRA,Int(XBARRA),YBARRA,OGGETTO
Bob OGGETTOLATIDELLABARRA,Int(XBARRA),YBARRA,OGGETTO+5
Proc LIMITAIMOVIMENTIDELLABARRAMENTRESTACAMBIANDO[OGGETTO]
Bob Update
Next OGGETTO
Return
End Proc
Procedure CANCELLAIBOING
'turn off all the boings
For BOING=0 To MASSIMOBOINGINCAMPO-1
Bob Off OGGETTOBOING+BOING
Next BOING
Bob Update
End Proc
Procedure CANCELLAILBOING[BOING]
'turn off the specified boing
Bob Off OGGETTOBOING+BOING
Bob Update
End Proc
Procedure CANCELLAILGUANO
Bob Off OGGETTOGUANO
Bob Update
GUANOMOLLATO=FALSO
GUANOINCAMPO=FALSO
End Proc
Procedure CANCELLAILMATTONCINODIPOTENZIAMENTO[MATTONCINODIPOTENZIAMENTO]
'turn off the specified bonus brick
Bob Off OGGETTOMATTONCINODIPOTENZIAMENTO+MATTONCINODIPOTENZIAMENTO
Bob Update
MATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)=0
End Proc
Procedure CANCELLAILNEMICOUNO[NEMICOUNO]
'turn off the specified enemy one
Bob Off OGGETTONEMICOUNO+NEMICOUNO
Bob Update
End Proc
Procedure CANCELLAILPAPERO
'turn off the duck
Bob Off OGGETTOPAPERO
Bob Update
End Proc
Procedure CANCELLAILPAPEROALIENO
'turn off the alien duck
Bob Off OGGETTOPAPEROALIENO
Bob Update
_PAPEROALIENO=0
_PAPEROALIENOINCAMPO=FALSO
End Proc
Procedure CANCELLAILPROIETTILEDELNEMICOUNO[NEMICOUNO]
'turn off the enemy one bullet
Bob Off OGGETTOPROIETTILENEMICOUNO+NEMICOUNO
Bob Update
End Proc
Procedure CANCELLAILRAGGIOLASER
'turn off the laser ray
Bob Off OGGETTORAGGIOLASER
Bob Update
RAGGIOLASERSPARATO=FALSO
End Proc
Procedure CANCELLAILRUBAPALLINA
'turn off the ballthief
Bob Off OGGETTORUBAPALLINA
Bob Update
Proc IMPOSTAILRITARDODELLENTRATAINCAMPODELRUBAPALLINA
PALLINASCELTADALRUBAPALLINA=MASSIMOPALLINEINCAMPO
End Proc
Procedure CANCELLAIMATTONCINI
'clear the bricks area
Cls 0,0,0 To XPANNELLO,Screen Height
Screen Swap
Cls 0,0,0 To XPANNELLO,Screen Height
Screen Swap
End Proc
Procedure CANCELLAIMATTONCINIDIPOTENZIAMENTO[M0DO]
'turn off all the bonus bricks
For MATTONCINODIPOTENZIAMENTO=0 To MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO-1
If MATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)>0
Bob Off OGGETTOMATTONCINODIPOTENZIAMENTO+MATTONCINODIPOTENZIAMENTO
End If
If M0DO=VERO Then MATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)=0
Next MATTONCINODIPOTENZIAMENTO
Bob Update
End Proc
Procedure CANCELLAINEMICIUNO
'turn off the enemies one
For NEMICOUNO=0 To MASSIMONEMICIUNOINCAMPO-1
Bob Off OGGETTONEMICOUNO+NEMICOUNO
Next NEMICOUNO
Bob Update
End Proc
Procedure CANCELLAIPROIETTILIDEINEMICIUNO
'turn off the enemies one bullets
For NEMICOUNO=0 To MASSIMONEMICIUNOINCAMPO-1
Bob Off OGGETTOPROIETTILENEMICOUNO+NEMICOUNO
Next NEMICOUNO
Bob Update
End Proc
Procedure CANCELLALABARRA
'turn off the bar
Bob Off OGGETTOCENTRODELLABARRA
Bob Off OGGETTOLATIDELLABARRA
Bob Update
End Proc
Procedure CANCELLALAPALLINA[PALLINA]
'turn off the specified ball
Bob Off OGGETTOPALLINA+PALLINA
Bob Update
End Proc
Procedure CANCELLALARIGA
'turn off the row
If RIGA>0
T0GLILARIGA=RIGA : RIGA=0
End If
For XRIGA=XRIGA To 0 Step -1
Proc MOSTRALARIGA[T0GLILARIGA] : Wait Vbl
Next XRIGA
DURATADELLARIGA=-1
End Proc
Procedure CANCELLALEPALLINE
'turn off all the balls
For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
Bob Off OGGETTOPALLINA+PALLINA
Next PALLINA
Bob Update
End Proc
Procedure CARICAGLIEFFETTISONORI
'load the sounds
If Chip Free<387662
EFFETTISONORICARICATI=1
Else
Load PERCORSODELLAMUSICA$+EFFETTISONORI$
EFFETTISONORICARICATI=2
End If
End Proc
Procedure CARICAGLIOGGETTI
'load the objects
Load PERCORSODELLAGRAFICA$+OGGETTI$
End Proc
Procedure CARICAILLIVELLO
'load the level
LIVELLO$="Livello"+Str$(LIVELLO)-" "
FILE$=PERCORSODEILIVELLI$+LIVELLO$
If Exist(FILE$)
Open In 1,FILE$
MARCATORE$=Input$(1,9)
LUNGHEZZABANCO=Lof(1)
Close 1
If MARCATORE$="Mattonite"
Reserve As Work BANCODELLIVELLO,LUNGHEZZABANCO
Bload FILE$,Start(BANCODELLIVELLO)
End If
Else
LIVELLO= Not LIVELLO+1
End If
End Proc
Procedure CARICAUNMODULOMED
'load the med module if there is space
Erase BANCODELMODULOMED
M0DULOMEDCARICATO=Rnd(1)+1
If M0DULOMEDCARICATO=1
If Chip Free<107376
M0DULOMEDCARICATO=FALSO
Else
Med Load PERCORSODELLAMUSICA$+M0DULOMEDUNO$,BANCODELMODULOMED
M0DULOMEDCARICATO=VERO
End If
Else If M0DULOMEDCARICATO=2
If Chip Free<119072
M0DULOMEDCARICATO=FALSO
Else
Med Load PERCORSODELLAMUSICA$+M0DULOMEDDUE$,BANCODELMODULOMED
M0DULOMEDCARICATO=VERO
End If
End If
End Proc
Procedure CARICAILMOTIVODIFONDO
'load the background motive
MOTIVODIFONDO$="FunkFloor.8svx"
FILE$=PERCORSODELLAMUSICA$+MOTIVODIFONDO$
If Exist(FILE$)
Open In 1,FILE$
LUNGHEZZABANCO=Max(Lof(1),512)
Close 1
MEMORIA=Chip Free+Fast Free
If LUNGHEZZABANCO>MEMORIA
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1]
SENZAMEMORIA$="There is no enough memory"+ACAPO$
SENZAMEMORIA$=SENZAMEMORIA$+"to load the background music."+ACAPO$
SENZAMEMORIA$=SENZAMEMORIA$+"Press a (mouse) key to continue..."
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[SENZAMEMORIA$,21,20,1,250]
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1]
Put Block 2
MOTIVODIFONDOCARICATO=0
Else
Reserve As Work BANCOTEMPORANEO,LUNGHEZZABANCO
Bload FILE$,Start(BANCOTEMPORANEO)
SEPARATORE=Instr(FILE$,":") : POSIZIONECARATTERE=1
For A=1 To Len(FILE$)
If Instr(FILE$,"/",POSIZIONE)>0
SEPARATORECASSETTO=Instr(FILE$,"/",POSIZIONECARATTERE)
POSIZIONECARATTERE=SEPARATORECASSETTO+1
End If
Next A
SEPARATORE=Max(SEPARATORE,SEPARATORECASSETTO)
PERCORSO$=Left$(FILE$,SEPARATORE)
If Right$(PERCORSO$,1)="/"
PERCORSO$=Left$(PERCORSO$,Len(PERCORSO$)-1)
End If
NOMEFILE$=Right$(FILE$,Len(FILE$)-SEPARATORE)
MOTIVODIFONDOCARICATO=1
End If
Else
Get Block 2,0,0,Screen Width,Screen Height
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1]
NONTROVOILMOTIVODIFONDO$="I cannot find the background music."+ACAPO$
NONTROVOILMOTIVODIFONDO$=NONTROVOILMOTIVODIFONDO$+"Press a (mouse) key to continue..."
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[NONTROVOILMOTIVODIFONDO$,21,20,1,250]
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1]
Put Block 2
MOTIVODIFONDOCARICATO=0
End If
End Proc
Procedure CARICAIPUNTEGGIDEICENTOMIGLIORIGIOCATORI
'load the top hundred scores
If Exist(PUNTEGGI$)
CENTOGIOCATORI$=""
Open In 1,PUNTEGGI$
For POSIZIONE=0 To 99
Exit If Eof(1)
Input #1,NOMEDELGIOCATORE$(POSIZIONE)
CENTOGIOCATORI$=CENTOGIOCATORI$+"<"+Str$(POSIZIONE+1)-" "+"> "
CENTOGIOCATORI$=CENTOGIOCATORI$+NOMEDELGIOCATORE$(POSIZIONE)+ACAPO$
Input #1,PUNTEGGIODELGIOCATORE$(POSIZIONE)
CENTOGIOCATORI$=CENTOGIOCATORI$+PUNTEGGIODELGIOCATORE$(POSIZIONE)
CENTOGIOCATORI$=CENTOGIOCATORI$+" points up to level "
Input #1,LIVELLOINCUIILGIOCATOREHAFINITOILGIOCO$(POSIZIONE)
CENTOGIOCATORI$=CENTOGIOCATORI$+LIVELLOINCUIILGIOCATOREHAFINITOILGIOCO$(POSIZIONE)
If Not Eof(1)
CENTOGIOCATORI$=CENTOGIOCATORI$+ACAPO$
End If
Next POSIZIONE
Close 1
PUNTEGGIOMASSIMO=Val(PUNTEGGIODELGIOCATORE$(0))
Inc POSIZIONE
End If
End Proc
Procedure CARICARAWOIFF
'recognize between raw or iff sample giving a sample in bank ready to be used
INDIRIZZO=Start(BANCOTEMPORANEO)+8
If Peek$(INDIRIZZO,4)="8SVX"
Add INDIRIZZO,12
LUNGHEZZABANCO=Leek(INDIRIZZO)
If LUNGHEZZABANCO=0
Add INDIRIZZO,4
LUNGHEZZABANCO=Leek(INDIRIZZO)
Else
Add INDIRIZZO,4
End If
Add INDIRIZZO,8
FREQUENZA=Deek(INDIRIZZO)
Add INDIRIZZO,8
If Peek$(INDIRIZZO,4)="NAME"
Add INDIRIZZO,4
DATO=Leek(INDIRIZZO)
Add INDIRIZZO,4+DATO
End If
If Peek$(INDIRIZZO,4)="ANNO"
Add INDIRIZZO,4
DATO=Leek(INDIRIZZO)
Add INDIRIZZO,4
ANNOTAZIONI$=Peek$(INDIRIZZO,DATO)-Chr$(0)
Add INDIRIZZO,DATO
End If
If Peek$(INDIRIZZO,4)="BODY"
Add INDIRIZZO,4
LUNGHEZZADATI=Leek(INDIRIZZO)
Add INDIRIZZO,4
LUNGHEZZABANCO=Max(LUNGHEZZABANCO,LUNGHEZZADATI)
Reserve As Chip Work BANCODELMOTIVODIFONDO,LUNGHEZZABANCO
Copy INDIRIZZO,INDIRIZZO+LUNGHEZZABANCO-1 To Start(BANCODELMOTIVODIFONDO)
Else
ANOMALOIFF$="The file loaded is an abnormal IFF sound."+ACAPO$
ANOMALOIFF$=ANOMALOIFF$+"Press a (mouse) key to continue..."
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[SENZAMEMORIA$,21,20,1,250]
NOMEFILE$=""
End If
Else
LUNGHEZZABANCO=Length(BANCOTEMPORANEO)
Reserve As Chip Work BANCODELMOTIVODIFONDO,LUNGHEZZABANCO
Copy Start(BANCOTEMPORANEO),Start(BANCOTEMPORANEO)+LUNGHEZZABANCO-1 To Start(BANCODELMOTIVODIFONDO)
End If
Erase BANCOTEMPORANEO
End Proc
Procedure CREALEIMMAGINIPERLERIGHE
'create the row images
XFINALERIGA=XPANNELLO-1
IMMAGINERIGAUNO=IMMAGINEPALLINA+1
Ink 20 : Bar 0,251 To XFINALERIGA,255
Get Bob IMMAGINERIGAUNO,0,251 To XFINALERIGA+1,255+1
Hot Spot IMMAGINERIGAUNO,XFINALERIGA,0
IMMAGINERIGADUE=IMMAGINERIGAUNO+1
Ink 21 : Bar 0,251 To XFINALERIGA,255
Get Bob IMMAGINERIGADUE,0,251 To XFINALERIGA+1,255+1
Hot Spot IMMAGINERIGADUE,XFINALERIGA,0
IMMAGINERIGATRE=IMMAGINERIGADUE+1
Ink 22 : Bar 0,251 To XFINALERIGA,255
Get Bob IMMAGINERIGATRE,0,251 To XFINALERIGA+1,255+1
Hot Spot IMMAGINERIGATRE,XFINALERIGA,0
Ink 0 : Bar 0,251 To XFINALERIGA,255
End Proc
Procedure CREATESTOBORDATO[XTESTO,YTESTO,TESTO$,C0LORETESTO,C0LOREBORDO]
'create outlined text
Ink C0LOREBORDO
Text XTESTO,YTESTO-1,TESTO$
Text XTESTO+1,YTESTO-1,TESTO$
Text XTESTO+1,YTESTO,TESTO$
Text XTESTO+1,YTESTO+1,TESTO$
Text XTESTO,YTESTO+1,TESTO$
Text XTESTO-1,YTESTO+1,TESTO$
Text XTESTO-1,YTESTO,TESTO$
Text XTESTO-1,YTESTO-1,TESTO$
Ink C0LORETESTO
Text XTESTO,YTESTO,TESTO$
End Proc
Procedure DABANCOAVARIABILI
'copy from bank to variables
If Length(BANCODELLIVELLO)>0
INDIRIZZO=Start(BANCODELLIVELLO)+9
For A=0 To 246
MATTONCINO(A)=Peek(INDIRIZZO)
Inc INDIRIZZO
Next A
For A=0 To 255
ARCOBALENO=Peek(INDIRIZZO)
Inc INDIRIZZO
ARCOBALENO=ARCOBALENO+Peek(INDIRIZZO)*$100
Rain(0,A)=ARCOBALENO : Rainbow 0,257,0,271
Wait Vbl
Inc INDIRIZZO
Next A
BONUS=Peek(INDIRIZZO)
Inc INDIRIZZO
Add BONUS,Peek(INDIRIZZO)*100
Inc INDIRIZZO
Add BONUS,Peek(INDIRIZZO)*10000
Inc INDIRIZZO
Add BONUS,Peek(INDIRIZZO)*1000000
Inc INDIRIZZO
End If
Erase BANCODELLIVELLO
End Proc
Procedure DISSOLVENZADEICOLORI[C0LORE,VELOCITA,M0DO]
'fade the colours
If M0DO=0
For C=0 To C0LORIDELLOSCHERMOMENOUNO
Colour C,C0LORE
If VELOCITA>0
Wait VELOCITA
End If
Next C
Else
Dim ROSSO(C0LORIDELLOSCHERMOMENOUNO),VERDE(C0LORIDELLOSCHERMOMENOUNO),BLU(C0LORIDELLOSCHERMOMENOUNO)
Dim ROSSOFINALE(C0LORIDELLOSCHERMOMENOUNO),VERDEFINALE(C0LORIDELLOSCHERMOMENOUNO),BLUFINALE(C0LORIDELLOSCHERMOMENOUNO)
Dim ROSSODISSOLTO(C0LORIDELLOSCHERMOMENOUNO),VERDEDISSOLTO(C0LORIDELLOSCHERMOMENOUNO),BLUDISSOLTO(C0LORIDELLOSCHERMOMENOUNO)
For C=0 To C0LORIDELLOSCHERMOMENOUNO
If M0DO=1
ROSSOFINALE(C)=C0LORE/256
VERDEFINALE(C)=C0LORE/16 mod 16
BLUFINALE(C)=C0LORE mod 16
Else If M0DO=2
ROSSOFINALE(C)=C0LORE(C)/256
VERDEFINALE(C)=C0LORE(C)/16 mod 16
BLUFINALE(C)=C0LORE(C) mod 16
End If
ROSSO(C)=Colour(C)/256
VERDE(C)=Colour(C)/16 mod 16
BLU(C)=Colour(C) mod 16
Next C
Repeat
For C=0 To C0LORIDELLOSCHERMOMENOUNO
If ROSSODISSOLTO(C)=FALSO
If ROSSO(C)<ROSSOFINALE(C)
Inc ROSSO(C)
Else If ROSSO(C)=ROSSOFINALE(C)
ROSSODISSOLTO(C)=VERO
Else If ROSSO(C)>ROSSOFINALE(C)
Dec ROSSO(C)
End If
End If
If VERDEDISSOLTO(C)=FALSO
If VERDE(C)<VERDEFINALE(C)
Inc VERDE(C)
Else If VERDE(C)=VERDEFINALE(C)
VERDEDISSOLTO(C)=VERO
Else If VERDE(C)>VERDEFINALE(C)
Dec VERDE(C)
End If
End If
If BLUDISSOLTO(C)=FALSO
If BLU(C)<BLUFINALE(C)
Inc BLU(C)
Else If BLU(C)=BLUFINALE(C)
BLUDISSOLTO(C)=VERO
Else If BLU(C)>BLUFINALE(C)
Dec BLU(C)
End If
End If
Colour C,ROSSO(C)*256+VERDE(C)*16+BLU(C)
If C=0
C0LORIDISSOLTI=0
End If
If ROSSODISSOLTO(C)=VERO
If VERDEDISSOLTO(C)=VERO
If BLUDISSOLTO(C)=VERO
Inc C0LORIDISSOLTI
End If
End If
End If
Next C
If VELOCITA>0
Wait VELOCITA
End If
Until C0LORIDISSOLTI=C0LORIDELLOSCHERMOMENOUNO+1
End If
End Proc
Procedure FAIINSERIREALGIOCATOREILSUOPUNTEGGIO
'let the player type his/her name and then insert this and the and score in the
' the top hundred scores
GIOCATORE$="Anonymous"
Repeat
MESSAGGIO$=""
MESSAGGIO$=MESSAGGIO$+"You have entered the Top Hundred Scores..."+ACAPO$
MESSAGGIO$=MESSAGGIO$+"...at position"+Str$(POSIZIONE)+"."+ACAPO$
MESSAGGIO$=MESSAGGIO$+"Please backspace the Anonymous player..."+ACAPO$
MESSAGGIO$=MESSAGGIO$+"...and type your name; press Return when done."+ACAPO$
MESSAGGIO$=MESSAGGIO$+"Press the Esc key to undo the saving of your"+ACAPO$
MESSAGGIO$=MESSAGGIO$+"name and score in the top hundred list."+ACAPO$
MESSAGGIO$=MESSAGGIO$+"[>"+GIOCATORE$+"<]"+ACAPO$
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[MESSAGGIO$,22,20,1,9000]
If TASTO=0 and TASTOSCANSITO=0
GIOCATORE$="Anonymous" : TASTO=13
End If
If TASTO>255
TASTO=TASTO mod 256
End If
If TASTO=8
GIOCATORE$=Left$(GIOCATORE$,Len(GIOCATORE$)-1)
Else If TASTO=27
TASTO=13 : TASTOESCAPEPREMUTO=VERO
Else If TASTO>31
GIOCATORE$=GIOCATORE$+Chr$(TASTO)
End If
Until TASTO=13
If TASTOESCAPEPREMUTO=FALSO
For POSIZIONI=98 To 0 Step -1
If Val(PUNTEGGIODELGIOCATORE$(POSIZIONI))<PUNTEGGIO
NOMEDELGIOCATORE$(POSIZIONI+1)=NOMEDELGIOCATORE$(POSIZIONI)
PUNTEGGIODELGIOCATORE$(POSIZIONI+1)=PUNTEGGIODELGIOCATORE$(POSIZIONI)
LIVELLOINCUIILGIOCATOREHAFINITOILGIOCO$(POSIZIONI+1)=LIVELLOINCUIILGIOCATOREHAFINITOILGIOCO$(POSIZIONI)
End If
Next POSIZIONI
NOMEDELGIOCATORE$(POSIZIONE-1)=GIOCATORE$
PUNTEGGIODELGIOCATORE$(POSIZIONE-1)=Str$(PUNTEGGIO)-" "
If LIVELLO<0
LIVELLO= Not LIVELLO
End If
LIVELLOINCUIILGIOCATOREHAFINITOILGIOCO$(POSIZIONE-1)=Str$(LIVELLO)-" "
End If
End Proc
Procedure FERMAILMODULOMED
'stop the med module
Med Stop
End Proc
Procedure HAISPARATOILRAGGIOLASER
'fire the laser ray
If LASER>0 and RAGGIOLASERSPARATO=FALSO
XLASER=XBARRA : YLASER=YBARRA-5 : IMMAGINERAGGIOLASER=9+LASER
RAGGIOLASERSPARATO=VERO
If EFFETTISONORICARICATI=2
Sam Play VOCE,4,8363/SEMITONO#^LASER : Proc VOCESEGUENTE
Else If EFFETTISONORICARICATI=1
Shoot
End If
End If
End Proc
Procedure ILBOINGESTATOCOLPITO[BOING]
'check if the specified boing has been hitted
If Bob Col(OGGETTOBOING+BOING,OGGETTOPALLINA To OGGETTOPALLINA+MASSIMOPALLINEINCAMPO-1)=VERO
PALLINA=Col(-1)-OGGETTOPALLINA
XDISTANZADELLAPALLINADALBOINGCOLPITO=Abs(XBOING(BOING)-Int(XPALLINA#(PALLINA)))
If XDISTANZADELLAPALLINADALBOINGCOLPITO>9
DELTAXPALLINA#(PALLINA)=-DELTAXPALLINA#(PALLINA)
End If
YDISTANZADELLAPALLINADALBOINGCOLPITO=Abs(YBOING(BOING)-Int(YPALLINA#(PALLINA)))
If YDISTANZADELLAPALLINADALBOINGCOLPITO>9
DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA)
End If
Add PUNTEGGIO,3 : Proc MOSTRAILPUNTEGGIO[VERO]
BOING(BOING)=RITARDODELLENTRATAINCAMPODEIBOING
If EFFETTISONORICARICATI=2
Sam Play VOCE,9 : Proc VOCESEGUENTE
Else If EFFETTISONORICARICATI=1
Bell 3
End If
Else If Bob Col(OGGETTOBOING+BOING,OGGETTORAGGIOLASER To OGGETTORAGGIOLASER)=VERO
Proc CANCELLAILRAGGIOLASER
Add PUNTEGGIO,2 : Proc MOSTRAILPUNTEGGIO[VERO]
BOING(BOING)=RITARDODELLENTRATAINCAMPODEIBOING
If EFFETTISONORICARICATI=2
Sam Play VOCE,9 : Proc VOCESEGUENTE
Else If EFFETTISONORICARICATI=1
Bell 2
End If
Else If Bob Col(OGGETTOBOING+BOING,OGGETTOCENTRODELLABARRA To OGGETTOLATIDELLABARRA)=VERO
If BOINGMORTALE(BOING)=VERO
EFFETTODELBOINGMORTALE=Rnd(3)
If EFFETTODELBOINGMORTALE=3
Proc CANCELLALEPALLINE
PALLINEINCAMPO=0
Else If EFFETTODELBOINGMORTALE=2
If LASER>0
Dec LASER
End If
Else If EFFETTODELBOINGMORTALE=1
_BARRABLOCCATA=50+LIVELLO
End If
End If
Inc PUNTEGGIO : Proc MOSTRAILPUNTEGGIO[FALSO]
BOING(BOING)=RITARDODELLENTRATAINCAMPODEIBOING
If EFFETTISONORICARICATI=2
Sam Play VOCE,9 : Proc VOCESEGUENTE
Else If EFFETTISONORICARICATI=1
Bell 1
End If
End If
End Proc
Procedure ILBOINGEUSCITODALCAMPODIGIOCO[BOING]
'check if the specified boing has gone out of the game field
If YBOING(BOING)>255+9 Then BOING(BOING)=RITARDODELLENTRATAINCAMPODEIBOING
End Proc
Procedure ILGUANOEUSCITODALCAMPODIGIOCO
'check if the guano has gone out of the game field
If YGUANO>255 Then Proc CANCELLAILGUANO
End Proc
Procedure ILNEMICOUNOESTATOCOLPITO[NEMICOUNO]
'check if the specified enemy one has been hitted
If Bob Col(OGGETTONEMICOUNO+NEMICOUNO,OGGETTOPALLINA To OGGETTOPALLINA+MASSIMOPALLINEINCAMPO-1)=VERO
PALLINA=Col(-1)-OGGETTOPALLINA
XDISTANZADELLAPALLINADALBOINGCOLPITO=Abs(XNEMICOUNO(NEMICOUNO)-Int(XPALLINA#(PALLINA)))
If XDISTANZADELLAPALLINADALBOINGCOLPITO>11
DELTAXPALLINA#(PALLINA)=-DELTAXPALLINA#(PALLINA)
End If
YDISTANZADELLAPALLINADALBOINGCOLPITO=Abs(YNEMICOUNO(NEMICOUNO)-Int(YPALLINA#(PALLINA)))
If YDISTANZADELLAPALLINADALBOINGCOLPITO>11
DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA)
End If
Add PUNTEGGIO,6 : Proc MOSTRAILPUNTEGGIO[VERO]
If EFFETTISONORICARICATI=2
Sam Play VOCE,9 : Proc VOCESEGUENTE
Else If EFFETTISONORICARICATI=1
Bell 3
End If
NEMICOUNOCOLPITO=VERO
Else If Bob Col(OGGETTONEMICOUNO+NEMICOUNO,OGGETTORAGGIOLASER To OGGETTORAGGIOLASER)=VERO
Proc CANCELLAILRAGGIOLASER
Add PUNTEGGIO,4 : Proc MOSTRAILPUNTEGGIO[VERO]
If EFFETTISONORICARICATI=2
Sam Play VOCE,9 : Proc VOCESEGUENTE
Else If EFFETTISONORICARICATI=1
Bell 2
End If
NEMICOUNOCOLPITO=VERO
Else If Bob Col(OGGETTONEMICOUNO+NEMICOUNO,OGGETTOCENTRODELLABARRA To OGGETTOLATIDELLABARRA)=VERO
Add PUNTEGGIO,2 : Proc MOSTRAILPUNTEGGIO[FALSO]
If EFFETTISONORICARICATI=2
Sam Play VOCE,9 : Proc VOCESEGUENTE
Else If EFFETTISONORICARICATI=1
Bell 1
End If
NEMICOUNOCOLPITO=VERO
End If
If NEMICOUNOCOLPITO=VERO
Proc CANCELLAILNEMICOUNO[NEMICOUNO] : NEMICOUNO(NEMICOUNO)=0
RITARDODELLENTRATAINCAMPODEINEMICI=-3000
End If
End Proc
Procedure ILNEMICOUNOEUSCITODALCAMPODIGIOCO[NEMICOUNO]
'check if the specified enemy one has gone out of the game field
If COMPORTAMENTODEINEMICI=0
If XDIPARTENZANEMICOUNO(NEMICOUNO)=0
If XNEMICOUNO(NEMICOUNO)=Screen Width-LARGHEZZAPANNELLO+11
Proc CANCELLAILNEMICOUNO[NEMICOUNO]
If COMPORTAMENTODEINEMICI<MASSIMOCOMPORTAMENTIDEINEMICI-1
Inc COMPORTAMENTODEINEMICI
End If
NEMICOUNOUSCITODALCAMPODIGIOCO=VERO
End If
Else If XDIPARTENZANEMICOUNO(NEMICOUNO)=1
If XNEMICOUNO(NEMICOUNO)=-11
Proc CANCELLAILNEMICOUNO[NEMICOUNO]
If COMPORTAMENTODEINEMICI<MASSIMOCOMPORTAMENTIDEINEMICI-1
Inc COMPORTAMENTODEINEMICI
End If
NEMICOUNOUSCITODALCAMPODIGIOCO=VERO
End If
End If
If NEMICOUNOUSCITODALCAMPODIGIOCO=VERO
Proc CANCELLAILNEMICOUNO[NEMICOUNO] : NEMICOUNO(NEMICOUNO)=0
RITARDODELLENTRATAINCAMPODEINEMICI=-3000
End If
End If
End Proc
Procedure ILNEMICOUNOHASPARATO[NEMICOUNO]
'manage the enemy one bullet
If NEMICOUNO(NEMICOUNO)=1 or NEMICOUNO(NEMICOUNO)=2 or NEMICOUNO(NEMICOUNO)=36
If PROIETTILENEMICOUNO(NEMICOUNO)=0
PROIETTILENEMICOUNO(NEMICOUNO)=1
End If
End If
If PROIETTILENEMICOUNO(NEMICOUNO)>0
Bob OGGETTOPROIETTILENEMICOUNO+NEMICOUNO,XPROIETTILENEMICOUNO(NEMICOUNO),YPROIETTILENEMICOUNO(NEMICOUNO),IMMAGINEPROIETTILENEMICIUNO
End If
If PROIETTILENEMICOUNO(NEMICOUNO)=1
XPROIETTILENEMICOUNO(NEMICOUNO)=XNEMICOUNO(NEMICOUNO)
YPROIETTILENEMICOUNO(NEMICOUNO)=YNEMICOUNO(NEMICOUNO)+11
DIVISOREMOVIMENTOPROIETTILENEMICOUNO=Min(Abs(XBARRA-XNEMICOUNO(NEMICOUNO)),Abs(YBARRA-YNEMICOUNO(NEMICOUNO)))
DELTAXPROIETTILENEMICOUNO#(NEMICOUNO)=((XBARRA-XNEMICOUNO(NEMICOUNO))/DIVISOREMOVIMENTOPROIETTILENEMICOUNO)
DELTAYPROIETTILENEMICOUNO#(NEMICOUNO)=((YBARRA-YNEMICOUNO(NEMICOUNO))/DIVISOREMOVIMENTOPROIETTILENEMICOUNO)
PROIETTILENEMICOUNO(NEMICOUNO)=2
Else If PROIETTILENEMICOUNO(NEMICOUNO)=2
Add XPROIETTILENEMICOUNO(NEMICOUNO),Int(DELTAXPROIETTILENEMICOUNO#(NEMICOUNO))
Add YPROIETTILENEMICOUNO(NEMICOUNO),Int(DELTAYPROIETTILENEMICOUNO#(NEMICOUNO))
Proc ILPROIETTILEDELNEMICOUNOHACOLPITOLABARRA[NEMICOUNO]
Proc ILPROIETTILEDELNEMICOUNOEUSCITODALCAMPODIGIOCO[NEMICOUNO]
Else If PROIETTILENEMICOUNO(NEMICOUNO)=3
Proc CANCELLAILPROIETTILEDELNEMICOUNO[NEMICOUNO]
PROIETTILENEMICOUNO(NEMICOUNO)=0
End If
End Proc
Procedure ILPAPEROALIENOESTATOCOLPITO
'check if the alien duck has been hitted
If Bob Col(OGGETTOPAPEROALIENO,OGGETTOPALLINA To OGGETTOPALLINA+MASSIMOPALLINEINCAMPO-1)=VERO
PALLINA=Col(-1)-OGGETTOPALLINA
XPALLINA=Int(XPALLINA#(PALLINA))
XDISTANZADELLAPALLINADALPAPEROALIENO=Abs(XPAPEROALIENO-XPALLINA)
If XDISTANZADELLAPALLINADALPAPEROALIENO>12
DELTAXPALLINA#(PALLINA)=-DELTAXPALLINA#(PALLINA)
End If
YPALLINA=Int(YPALLINA#(PALLINA))
YDISTANZADELLAPALLINADALPAPEROALIENO=YPAPEROALIENO-YPALLINA
If YDISTANZADELLAPALLINADALPAPEROALIENO>-21 and YDISTANZADELLAPALLINADALPAPEROALIENO<10
DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA)
End If
Add PUNTEGGIO,24 : Proc MOSTRAILPUNTEGGIO[VERO]
If EFFETTISONORICARICATI=2
Sam Play VOCE,9 : Proc VOCESEGUENTE
Else If EFFETTISONORICARICATI=1
Boom
End If
_PAPEROALIENOCOLPITO=VERO
Else If Bob Col(OGGETTOPAPEROALIENO,OGGETTORAGGIOLASER To OGGETTORAGGIOLASER)=VERO
Proc CANCELLAILRAGGIOLASER
Add PUNTEGGIO,12 : Proc MOSTRAILPUNTEGGIO[VERO]
If EFFETTISONORICARICATI=2
Sam Play VOCE,9 : Proc VOCESEGUENTE
Else If EFFETTISONORICARICATI=1
Boom
End If
_PAPEROALIENOCOLPITO=VERO
Else If Bob Col(OGGETTOPAPEROALIENO,OGGETTOCENTRODELLABARRA To OGGETTOLATIDELLABARRA)=VERO
Add PUNTEGGIO,6 : Proc MOSTRAILPUNTEGGIO[VERO]
If EFFETTISONORICARICATI=2
Sam Play VOCE,9 : Proc VOCESEGUENTE
Else If EFFETTISONORICARICATI=1
Boom
End If
_PAPEROALIENOCOLPITO=VERO
End If
If _PAPEROALIENOCOLPITO=VERO
Proc CANCELLAILPAPEROALIENO
Proc IMPOSTAILRITARDODELLENTRATAINCAMPODELPAPEROALIENO
Proc CANCELLAILGUANO
End If
End Proc
Procedure ILPAPEROALIENOEUSCITODALCAMPODIGIOCO
'check if the alien duck has gone out of the game field
If YPAPEROALIENO>255+9 Then Proc CANCELLAILPAPEROALIENO
End Proc
Procedure ILPROIETTILEDELNEMICOUNOEUSCITODALCAMPODIGIOCO[NEMICOUNO]
'check if the ballthief has gone out of the game field
If XPROIETTILENEMICOUNO(NEMICOUNO)<-4 or XPROIETTILENEMICOUNO(NEMICOUNO)>XPANNELLO-4
PROIETTILENEMICOUNO(NEMICOUNO)=3
End If
If YPROIETTILENEMICOUNO(NEMICOUNO)>255+4
PROIETTILENEMICOUNO(NEMICOUNO)=3
End If
End Proc
Procedure ILPROIETTILEDELNEMICOUNOHACOLPITOLABARRA[NEMICOUNO]
'check if the enemy one bullet has been hitted the bar
If Bob Col(OGGETTOPROIETTILENEMICOUNO+NEMICOUNO,OGGETTOCENTRODELLABARRA To OGGETTOLATIDELLABARRA)=VERO
If _BARRE>0
Dec _BARRE
End If
PALLINEINCAMPO=0
PROIETTILENEMICOUNO(NEMICOUNO)=3
End If
End Proc
Procedure ILRUBAPALLINAESTATOCOLPITO
'check if the ballthief has been hitted
If RUBAPALLINACOLPITO=FALSO
For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
If PALLINAPRESADALRUBAPALLINA<MASSIMOPALLINEINCAMPO
If PALLINA<>PALLINAPRESADALRUBAPALLINA
If Bob Col(OGGETTORUBAPALLINA,OGGETTOPALLINA+PALLINA To OGGETTOPALLINA+PALLINA)=VERO
XPALLINA=Int(XPALLINA#(PALLINA))
XDISTANZADELLAPALLINADALRUBAPALLINA=Abs(XRUBAPALLINA-XPALLINA)
If XDISTANZADELLAPALLINADALRUBAPALLINA>12
DELTAXPALLINA#(PALLINA)=-DELTAXPALLINA#(PALLINA)
End If
YPALLINA=Int(YPALLINA#(PALLINA))
YDISTANZADELLAPALLINADALRUBAPALLINA=YRUBAPALLINA-YPALLINA
If YDISTANZADELLAPALLINADALRUBAPALLINA>0 and YDISTANZADELLAPALLINADALRUBAPALLINA<11
DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA)
End If
Add PUNTEGGIO,50 : Proc MOSTRAILPUNTEGGIO[VERO]
If EFFETTISONORICARICATI=2
Sam Play VOCE,9 : Proc VOCESEGUENTE
Else If EFFETTISONORICARICATI=1
Boom
End If
RUBAPALLINACOLPITO=VERO
End If
End If
End If
Next PALLINA
If Bob Col(OGGETTORUBAPALLINA,OGGETTORAGGIOLASER To OGGETTORAGGIOLASER)=VERO
Proc CANCELLAILRAGGIOLASER
Add PUNTEGGIO,100 : Proc MOSTRAILPUNTEGGIO[VERO]
If EFFETTISONORICARICATI=2
Sam Play VOCE,9 : Proc VOCESEGUENTE
Else If EFFETTISONORICARICATI=1
Boom
End If
RUBAPALLINACOLPITO=VERO
Else If Bob Col(OGGETTORUBAPALLINA,OGGETTOCENTRODELLABARRA To OGGETTOLATIDELLABARRA)=VERO
Add PUNTEGGIO,200 : Proc MOSTRAILPUNTEGGIO[VERO]
If EFFETTISONORICARICATI=2
Sam Play VOCE,9 : Proc VOCESEGUENTE
Else If EFFETTISONORICARICATI=1
Boom
End If
RUBAPALLINACOLPITO=VERO
End If
Else
Inc IMMAGINERUBAPALLINA
If IMMAGINERUBAPALLINA=10
Proc CANCELLAILRUBAPALLINA
Proc IMPOSTAILRITARDODELLENTRATAINCAMPODELRUBAPALLINA
If PALLINAPRESADALRUBAPALLINA<MASSIMOPALLINEINCAMPO
PALLINA(PALLINAPRESADALRUBAPALLINA)=VERO
End If
PALLINAPRESADALRUBAPALLINA=MASSIMOPALLINEINCAMPO
IMMAGINERUBAPALLINA=0
RUBAPALLINACOLPITO=FALSO
End If
End If
End Proc
Procedure ILRUBAPALLINAEUSCITODALCAMPODIGIOCO
'check if the ballthief has gone out of the game field
If YRUBAPALLINA<-4
Dec PALLINEINCAMPO
Proc CANCELLAILRUBAPALLINA
PALLINAPRESADALRUBAPALLINA=MASSIMOPALLINEINCAMPO
End If
End Proc
Procedure IMPOSTAGLIOGGETTI
'set the object images
IMMAGINEPALLINA=Length(1)
IMMAGINEPROIETTILENEMICIUNO=IMMAGINEPALLINA-1
IMMAGINELASER=6
MATTONCINIDIPOTENZIAMENTO=Length(1)-IMMAGINIPROIETTILENEMICIUNO-IMMAGININEMICOUNO-IMMAGINIBOINGMORTALE-IMMAGINIBOING-IMMAGINIRUBAPALLINA-IMMAGINIGUANO-IMMAGINIPAPERO*2-IMMAGINIESPLOSIONEMATTONCINO-116
For IMMAGINE=0 To IMMAGININEMICOUNO-1
IMMAGINENEMICOUNO(IMMAGINE)=IMMAGINEPALLINA-IMMAGINIPROIETTILENEMICIUNO-IMMAGININEMICOUNO+IMMAGINE
Next IMMAGINE
For IMMAGINE=0 To IMMAGINIBOINGMORTALE-1
IMMAGINEBOINGMORTALE(IMMAGINE)=IMMAGINEPALLINA-IMMAGINIPROIETTILENEMICIUNO-IMMAGININEMICOUNO-IMMAGINIBOINGMORTALE+IMMAGINE
Next IMMAGINE
For IMMAGINE=0 To IMMAGINIBOING-1
IMMAGINEBOING(IMMAGINE)=IMMAGINEPALLINA-IMMAGINIPROIETTILENEMICIUNO-IMMAGININEMICOUNO-IMMAGINIBOINGMORTALE-IMMAGINIBOING+IMMAGINE
Next IMMAGINE
For IMMAGINE=0 To IMMAGINIRUBAPALLINA-1
IMMAGINERUBAPALLINA(IMMAGINE)=IMMAGINEPALLINA-IMMAGINIPROIETTILENEMICIUNO-IMMAGININEMICOUNO-IMMAGINIBOINGMORTALE-IMMAGINIBOING-IMMAGINIRUBAPALLINA+IMMAGINE
Next IMMAGINE
IMMAGINEGUANO=IMMAGINEPALLINA-IMMAGINIPROIETTILENEMICIUNO-IMMAGININEMICOUNO-IMMAGINIBOINGMORTALE-IMMAGINIBOING-IMMAGINIRUBAPALLINA-IMMAGINIGUANO
For IMMAGINE=0 To IMMAGINIPAPERO-1
IMMAGINEPAPEROALIENO(IMMAGINE)=IMMAGINEPALLINA-IMMAGINIPROIETTILENEMICIUNO-IMMAGININEMICOUNO-IMMAGINIBOINGMORTALE-IMMAGINIBOING-IMMAGINIRUBAPALLINA-IMMAGINIGUANO-IMMAGINIPAPERO+IMMAGINE
Next IMMAGINE
For IMMAGINE=0 To IMMAGINIPAPERO-1
IMMAGINEPAPERO(IMMAGINE)=IMMAGINEPALLINA-IMMAGINIPROIETTILENEMICIUNO-IMMAGININEMICOUNO-IMMAGINIBOINGMORTALE-IMMAGINIBOING-IMMAGINIRUBAPALLINA-IMMAGINIGUANO-IMMAGINIPAPERO*2+IMMAGINE
Next IMMAGINE
For IMMAGINE=0 To 12
IMMAGINEESPLOSIONEMATTONCINO(IMMAGINE)=IMMAGINE+116
Next IMMAGINE
End Proc
Procedure IMPOSTAIBOING
'set the boings to their initial status
For BOING=0 To MASSIMOBOINGINCAMPO-1
BOING(BOING)=0
Next BOING
End Proc
Procedure IMPOSTAICOLORI
'remember the screen palette
Get Bob Palette
C0LORIDELLOSCHERMOMENOUNO=Screen Colour-1
If C0LORIDELLOSCHERMOMENOUNO=63 Then C0LORIDELLOSCHERMOMENOUNO=31
For C=0 To C0LORIDELLOSCHERMOMENOUNO
C0LORE(C)=Colour(C)
Next C
End Proc
Procedure IMPOSTAILAMPEGGI
'set the colour flashes
Flash 20,"(0FF,2)(FFF,1)(0FF,2)(000,1)"
Flash 21,"(F70,2)(FFF,1)(F70,2)(000,1)"
Flash 22,"(F77,9)(FF7,9)(7F7,9)(7FF,9)(77F,9)(F7F,9)"
End Proc
Procedure IMPOSTAILRITARDODELLENTRATAINCAMPODELPAPEROALIENO
'time waiting for the alien duck
RITARDODELLENTRATAINCAMPODELPAPEROALIENO=29475-LIVELLO*25
End Proc
Procedure IMPOSTAILRITARDODELLENTRATAINCAMPODELRUBAPALLINA
'time waiting for the ballthief
RITARDODELLENTRATAINCAMPODELRUBAPALLINA=55950-LIVELLO*50
End Proc
Procedure IMPOSTAINEMICIUNO
For NEMICOUNO=0 To MASSIMONEMICIUNOINCAMPO-1
NEMICOUNO(NEMICOUNO)=0
Next NEMICOUNO
End Proc
Procedure IMPOSTAIPERCORSIDEIFILE
'look for the file paths
PERCORSODELLAGRAFICA$=PERCORSO$+"Grafica/"
PERCORSODEILIVELLI$=PERCORSO$+"Livelli/"
PERCORSODELLAMUSICA$=PERCORSO$+"Musica/"
End Proc
Procedure IMPOSTALADURATADELLERIGHE
'set the time duration of the rows in 50th of a second
DURATADELLARIGA(0)=3000
DURATADELLARIGA(1)=9000
DURATADELLARIGA(2)=27000
End Proc
Procedure IMPOSTALARCOBALENO
'set the rainbow
Set Rainbow 0,0,271,"","",""
For LINEADELLARCOBALENO=0 To 255
Rain(0,LINEADELLARCOBALENO)=$FFF
Next LINEADELLARCOBALENO
Rainbow 0,257,0,271
End Proc
Procedure IMPOSTALEPALLINE
'set the bouncign of the balls to their initial state
For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
If PALLINA<PALLINEINCAMPO
PALLINA(PALLINA)=VERO
VELOCITADELLAPALLINA#(PALLINA)=1
D1REZIONEXPALLINA=Rnd(1)
LAPALLINAHARIMBALZATOSUUNBORDODELLABARRA(PALLINA)=FALSO
If D1REZIONEXPALLINA=1
DELTAXPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)
Else
DELTAXPALLINA#(PALLINA)=-VELOCITADELLAPALLINA#(PALLINA)
End If
DELTAYPALLINA#(PALLINA)=-VELOCITADELLAPALLINA#(PALLINA)
Else
PALLINA(PALLINA)=FALSO
Proc CANCELLALAPALLINA[PALLINA]
End If
LAPALLINAHARIMBALZATOSUUNBORDODELLABARRA(PALLINA)=FALSO
Next PALLINA
End Proc
Procedure IMPOSTALEZONEDEIMATTONCINI
'set the brick detection zones
Reserve Zone 264
For MATTONCINO=0 To 246
LINEADELMATTONCINO=MATTONCINO/13 : RIGADELMATTONCINO=MATTONCINO mod 13
X0ZONA(MATTONCINO)=RIGADELMATTONCINO*21
Y0ZONA(MATTONCINO)=LINEADELMATTONCINO*11
X0MATTONCINO=X0ZONA(MATTONCINO)
Y0MATTONCINO=Y0ZONA(MATTONCINO)
If RIGADELMATTONCINO=12
X1MATTONCINO=X0MATTONCINO+19
Y1MATTONCINO=Y0MATTONCINO+9
Else
X1MATTONCINO=X0MATTONCINO+20
Y1MATTONCINO=Y0MATTONCINO+10
End If
Set Zone MATTONCINO+1,X0MATTONCINO,Y0MATTONCINO To X1MATTONCINO,Y1MATTONCINO
Next MATTONCINO
End Proc
Procedure IMPOSTALINGOMBRODELLABARRA
'set the length of the bars from the center to an edge
INGOMBRODELLABARRA(0)=10
INGOMBRODELLABARRA(1)=16
INGOMBRODELLABARRA(2)=31
End Proc
Procedure IMPOSTALOSCHERMO
'set the screen
Screen Open 0,320,256,64,Lowres : Curs Off : Flash Off : Pen 1 : Paper 0
Cls : Bob Update Off : Gr Writing 0 : Wait Vbl : Double Buffer : Update Off
Autoback 0 : Limit Mouse
End Proc
Procedure INDIVIDUALAPOSIZIONEDELPROGRAMMA
' Look for the position of the program
PERCORSO$=Dir$
End Proc
Procedure LABARRAESTATACOLPITADALGUANO
'check if the bar has been hitted by the guano
If GUANOINCAMPO=VERO and GUANOMOLLATO=VERO
If Bob Col(OGGETTOGUANO,OGGETTOCENTRODELLABARRA To OGGETTOLATIDELLABARRA)=VERO
EFFETTODELGUANO=Rnd(2)
If EFFETTODELGUANO=2
If LASER>0
Dec LASER
End If
Else If EFFETTODELGUANO=1
_BARRABLOCCATA=50+LIVELLO
End If
Proc CANCELLAILGUANO
End If
End If
End Proc
Procedure LABARRAESTATACOLPITADALRAGGIOLASERRIFLESSO
'check if the bar has been hitted by the reflected laser ray
If RAGGIOLASERSPARATO=VERO and RAGGIOLASERRIFLESSO=VERO
If Bob Col(OGGETTORAGGIOLASER,OGGETTOCENTRODELLABARRA To OGGETTOLATIDELLABARRA)=VERO
EFFETTODELRAGGIOLASERRIFLESSO=Rnd(2)
If EFFETTODELRAGGIOLASERRIFLESSO=2
If LASER>0
Dec LASER
End If
Else If EFFETTODELRAGGIOLASERRIFLESSO=1
_BARRABLOCCATA=50+LIVELLO
End If
Proc CANCELLAILRAGGIOLASER
RAGGIOLASERRIFLESSO=FALSO
End If
End If
End Proc
Procedure LAPALLINAEUSCITADALCAMPODIGIOCO[PALLINA]
'check if the specified ball has gone out of the game field
If YPALLINA#(PALLINA)>255+4
Proc CANCELLALAPALLINA[PALLINA]
PALLINA(PALLINA)=FALSO
Dec PALLINEINCAMPO
End If
End Proc
Procedure LAPALLINAHACOLPITOLABARRA[PALLINA]
'check if the specified ball has hitted the bar
If Bob Col(OGGETTOPALLINA+PALLINA,OGGETTOCENTRODELLABARRA To OGGETTOLATIDELLABARRA)=VERO
If LAPALLINAHACOLPITOLABARRA(PALLINA)=FALSO
If C0LLA=VERO
XCOLLA(PALLINA)=Int(XBARRA-XPALLINA#(PALLINA))
YCOLLA(PALLINA)=YBARRA-Int(YPALLINA#(PALLINA))
LAPALLINAERIMASTAINCOLLATAALLABARRA(PALLINA)=VERO
End If
If Col(OGGETTOCENTRODELLABARRA)=VERO
If LAPALLINAHARIMBALZATOSUUNBORDODELLABARRA(PALLINA)=VERO
DELTAXPALLINA#(PALLINA)=DELTAXPALLINA#(PALLINA)/2.0
DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA)*2
LAPALLINAHARIMBALZATOSUUNBORDODELLABARRA(PALLINA)=FALSO
Else
DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA)
End If
If EFFETTISONORICARICATI=2
Sam Play VOCE,2 : Proc VOCESEGUENTE
Else If EFFETTISONORICARICATI=1
Boom
End If
Else If Col(OGGETTOLATIDELLABARRA)=VERO
If LAPALLINAHARIMBALZATOSUUNBORDODELLABARRA(PALLINA)=VERO
DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA)
Else
DELTAXPALLINA#(PALLINA)=DELTAXPALLINA#(PALLINA)*2
DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA)/2.0
LAPALLINAHARIMBALZATOSUUNBORDODELLABARRA(PALLINA)=VERO
End If
If EFFETTISONORICARICATI=2
Sam Play VOCE,2,8363/2 : Proc VOCESEGUENTE
Else If EFFETTISONORICARICATI=1
Boom
End If
End If
LAPALLINAHACOLPITOLABARRA(PALLINA)=VERO
End If
Else
LAPALLINAHACOLPITOLABARRA(PALLINA)=FALSO
End If
End Proc
Procedure LAPALLINAHACOLPITOLARIGA[PALLINA]
'check if the specified ball has hitted the row
If Bob Col(OGGETTOPALLINA+PALLINA,OGGETTORIGA To OGGETTORIGA)=VERO
If DELTAYPALLINA#(PALLINA)>0
DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA)
If EFFETTISONORICARICATI=2
Sam Play VOCE,7 : Proc VOCESEGUENTE
Else If EFFETTISONORICARICATI=1
Bell 96
End If
End If
End If
End Proc
Procedure LIMITAIMOVIMENTIDELLABARRA
'lock bar movements
X0LIMITETOPO=X Hard(INGOMBRODELLABARRA(LUNGHEZZADELLABARRA))
Y0LIMITETOPO=Y Hard(0)
X1LIMITETOPO=X Hard(XPANNELLO-1-INGOMBRODELLABARRA(LUNGHEZZADELLABARRA))
Y1LIMITETOPO=Y Hard(Screen Height-1)
Limit Mouse X0LIMITETOPO,Y0LIMITETOPO To X1LIMITETOPO,Y1LIMITETOPO
End Proc
Procedure LIMITAIMOVIMENTIDELLABARRAMENTRESTACAMBIANDO[OGGETTO]
' Lock bar movements while it is changing
If OGGETTO>39 and OGGETTO<46
INGOMBRODELLABARRA=46-OGGETTO+10
Else If OGGETTO>12 and OGGETTO<27
INGOMBRODELLABARRA=OGGETTO+4
End If
X0LIMITETOPO=X Hard(INGOMBRODELLABARRA)
Y0LIMITETOPO=Y Hard(0)
X1LIMITETOPO=X Hard(XPANNELLO-1-INGOMBRODELLABARRA)
Y1LIMITETOPO=Y Hard(Screen Height-1)
Wait Vbl
Limit Mouse X0LIMITETOPO,Y0LIMITETOPO To X1LIMITETOPO,Y1LIMITETOPO
End Proc
Procedure LIMITI[NUMERO,LIMITEMINIMO,LIMITEMASSIMO]
'-> Limiti by Stefano Regattin
'i> 19 maggio 1996
'm> 12 giugno 1996
'--------------------------------------------------------
'La procedura equivale alle seguenti linee di programma:
' If NUMERO<LIMITEMINIMO Then NUMERO=LIMITEMINIMO
' If NUMERO>LIMITEMASSIMO Then NUMERO=LIMITEMASSIMO
'Se LIMITEMINIMO � maggiore di LIMITEMASSIMO ne scambia i valori
'----------------------------------------------------------------
If LIMITEMINIMO>LIMITEMASSIMO Then Swap LIMITEMINIMO,LIMITEMASSIMO
NUMERO=Max(Min(NUMERO,LIMITEMASSIMO),LIMITEMINIMO)
End Proc[NUMERO]
Procedure MATTONCINIDIPOTENZIAMENTO[MATTONCINO,ESCESEUGUALEAZERO]
'manage the bonus bricks
If ESCESEUGUALEAZERO>0 Then Pop Proc
If MATTONCINO=0
For MATTONCINODIPOTENZIAMENTO=0 To MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO-1
TIPODIMATTONCINODIPOTENZIAMENTO=MATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)
If TIPODIMATTONCINODIPOTENZIAMENTO>0
IMMAGINE=115+IMMAGINIESPLOSIONEMATTONCINO+TIPODIMATTONCINODIPOTENZIAMENTO
Bob OGGETTOMATTONCINODIPOTENZIAMENTO+MATTONCINODIPOTENZIAMENTO,XMATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO),YMATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO),IMMAGINE
Proc MATTONCINODIPOTENZIAMENTOPRESODALLABARRA[MATTONCINODIPOTENZIAMENTO,TIPODIMATTONCINODIPOTENZIAMENTO]
Inc YMATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)
Proc MATTONCINODIPOTENZIAMENTOUSCITODALCAMPODIGIOCO[MATTONCINODIPOTENZIAMENTO]
End If
Next MATTONCINODIPOTENZIAMENTO
Else
For MATTONCINODIPOTENZIAMENTO=0 To MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO-1
TIPODIMATTONCINODIPOTENZIAMENTO=MATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)
If TIPODIMATTONCINODIPOTENZIAMENTO=0
If MATTONCINO>0
MATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)=Rnd(29)+1
XMATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)=X0ZONA(MATTONCINO-1)
YMATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)=Y0ZONA(MATTONCINO-1)
Else If MATTONCINO<0
MATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)=-MATTONCINO
XMATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)=XBARRA-9
YMATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)=-9
End If
Exit
End If
Next MATTONCINODIPOTENZIAMENTO
End If
End Proc
Procedure MATTONCINOCOLPITODALLAPALLINA[PALLINA]
'check if a brick has been hitted by the specified ball
XPALLINA=Int(XPALLINA#(PALLINA)) : YPALLINA=Int(YPALLINA#(PALLINA))
MATTONCINO=Zone(XPALLINA,YPALLINA)
If MATTONCINO>0
MATTONELLA=MATTONCINO(MATTONCINO-1)
If MATTONELLA>0
If MATTONELLA<10
MATTONCINOELIMINATODALLAPALLINA=VERO
Else If MATTONELLA>9 and MATTONELLA<28
Add MATTONELLA,-9
MATTONCINO(MATTONCINO-1)=MATTONELLA
Proc RIDISEGNODELMATTONCINO[MATTONCINO,500]
Else
Proc MATTONCINIDIPOTENZIAMENTO[MATTONCINO,Rnd(9)]
MATTONCINOELIMINABILESOLODALRAGGIOLASER=VERO
End If
If MATTONCINOELIMINATODALLAPALLINA=VERO
Dec MATTONCINI : Inc PUNTEGGIO : Proc MOSTRAILPUNTEGGIO[FALSO]
Proc MATTONCINIDIPOTENZIAMENTO[MATTONCINO,Rnd(19)]
ESPLOSIONEMATTONCINO(MATTONCINO-1)=1
MATTONCINO(MATTONCINO-1)=0
Proc RIDISEGNODELMATTONCINO[MATTONCINO,500]
End If
Y0MATTONCINO=Y0ZONA(MATTONCINO-1)
Y1MATTONCINO=Y0MATTONCINO+9
If RIMBALZODELLEPALLINESUIMATTONCINI=VERO
If YPALLINA<Y1MATTONCINO and YPALLINA>Y0MATTONCINO
DELTAXPALLINA#(PALLINA)=-DELTAXPALLINA#(PALLINA)
Else
DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA)
End If
If MATTONCINOELIMINABILESOLODALRAGGIOLASER=VERO
If EFFETTISONORICARICATI=2
Sam Play VOCE,3,8363*SEMITONO#^4 : Proc VOCESEGUENTE
Else If EFFETTISONORICARICATI=1
Bell 40
End If
Else
If EFFETTISONORICARICATI=2
If MATTONCINOELIMINATODALLAPALLINA=VERO
Sam Play VOCE,19
Else
Sam Play VOCE,3
End If
Proc VOCESEGUENTE
Else If EFFETTISONORICARICATI=1
Boom
End If
End If
Else
If MATTONCINOELIMINABILESOLODALRAGGIOLASER=VERO
If EFFETTISONORICARICATI=2
Sam Play VOCE,3 : Proc VOCESEGUENTE
Else If EFFETTISONORICARICATI=1
Bell 60
End If
Else
If EFFETTISONORICARICATI=2
If MATTONCINOELIMINATODALLAPALLINA=VERO
Sam Play VOCE,19
Else
Sam Play VOCE,6
End If
Proc VOCESEGUENTE
Else If EFFETTISONORICARICATI=1
Bell 50
End If
End If
End If
End If
End If
End Proc
Procedure MATTONCINOCOLPITODALRAGGIOLASER
'check if a brick has been hitted by the laser ray
If RAGGIOLASERSPARATO=VERO
MATTONCINO=Zone(XLASER,YLASER)
If MATTONCINO>0
MATTONELLA=MATTONCINO(MATTONCINO-1)
If MATTONELLA>0
If MATTONELLA<10
MATTONCINOELIMINATODALRAGGIOLASER=VERO
Else If MATTONELLA>9 and MATTONELLA<28
Proc CANCELLAILRAGGIOLASER
Add MATTONELLA,-9
MATTONCINO(MATTONCINO-1)=MATTONELLA
Proc RIDISEGNODELMATTONCINO[MATTONCINO,500]
Else
If MATTONELLA=28
MATTONCINOELIMINATODALRAGGIOLASER=VERO
Else If MATTONELLA=29 and LASER>1
MATTONCINOELIMINATODALRAGGIOLASER=VERO
Else If MATTONELLA=30 and LASER=3
MATTONCINOELIMINATODALRAGGIOLASER=VERO
Else If MATTONELLA=31
RAGGIOLASERRIFLESSO=VERO
QUESTOEILMATTONCINOCHEHARIFLESSOILRAGGIOLASER=VERO
MATTONCINOELIMINATODALRAGGIOLASER=VERO
Else If MATTONELLA=32 and LASER>1
RAGGIOLASERRIFLESSO=VERO
QUESTOEILMATTONCINOCHEHARIFLESSOILRAGGIOLASER=VERO
MATTONCINOELIMINATODALRAGGIOLASER=VERO
Else If MATTONELLA=33 and LASER=3
RAGGIOLASERRIFLESSO=VERO
QUESTOEILMATTONCINOCHEHARIFLESSOILRAGGIOLASER=VERO
MATTONCINOELIMINATODALRAGGIOLASER=VERO
End If
End If
If MATTONCINOELIMINATODALRAGGIOLASER=VERO
If RAGGIOLASERRIFLESSO=FALSO or QUESTOEILMATTONCINOCHEHARIFLESSOILRAGGIOLASER=FALSO
Proc CANCELLAILRAGGIOLASER
End If
ESPLOSIONEMATTONCINO(MATTONCINO-1)=1
Dec MATTONCINI : Inc PUNTEGGIO : Proc MOSTRAILPUNTEGGIO[FALSO]
Proc MATTONCINIDIPOTENZIAMENTO[MATTONCINO,Rnd(9)]
MATTONCINO(MATTONCINO-1)=0
Proc RIDISEGNODELMATTONCINO[MATTONCINO,500]
If EFFETTISONORICARICATI=2
Sam Play VOCE,19 : Proc VOCESEGUENTE
Else If EFFETTISONORICARICATI=1
Boom
End If
End If
End If
End If
End If
End Proc
Procedure MATTONCINODIPOTENZIAMENTOPRESODALLABARRA[MATTONCINODIPOTENZIAMENTO,TIPODIMATTONCINODIPOTENZIAMENTO]
'check if the bar has met the specified bonus brick
If Bob Col(OGGETTOMATTONCINODIPOTENZIAMENTO+MATTONCINODIPOTENZIAMENTO,OGGETTOCENTRODELLABARRA To OGGETTOLATIDELLABARRA)=VERO
If TIPODIMATTONCINODIPOTENZIAMENTO=MATTONCINIDIPOTENZIAMENTO
MATTONCINODIPOTENZIAMENTOASORPRESA=VERO
Add PUNTEGGIO,20
Else
Add PUNTEGGIO,10
End If
Proc MOSTRAILPUNTEGGIO[VERO]
Proc CANCELLAILMATTONCINODIPOTENZIAMENTO[MATTONCINODIPOTENZIAMENTO]
Repeat
If TIPODIMATTONCINODIPOTENZIAMENTO=1 : Rem a(dd a )b(all in the game field)
For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
If PALLINA(PALLINA)=FALSO
PALLINA(PALLINA)=VERO
XPALLINA#(PALLINA)=XBARRA
YPALLINA#(PALLINA)=YBARRA-4
VELOCITADELLAPALLINA#(PALLINA)=1
D1REZIONEXPALLINA=Rnd(1)
If D1REZIONEXPALLINA=1
DELTAXPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)
Else
DELTAXPALLINA#(PALLINA)=-VELOCITADELLAPALLINA#(PALLINA)
End If
DELTAYPALLINA#(PALLINA)=-VELOCITADELLAPALLINA#(PALLINA)
Inc PALLINEINCAMPO
Exit
End If
Next
If EFFETTISONORICARICATI=2
Sam Play VOCE,16 : Proc VOCESEGUENTE
Else If EFFETTISONORICARICATI=1
Bell 30
End If
TIPODIMATTONCINODIPOTENZIAMENTO=0
Else If TIPODIMATTONCINODIPOTENZIAMENTO=2 : Rem b(all)+
If _BARRE<1000
Inc _BARRE : Proc MOSTRALEBARRERIMASTE
End If
If EFFETTISONORICARICATI=2
Sam Play VOCE,16 : Proc VOCESEGUENTE
Else If EFFETTISONORICARICATI=1
Bell 30
End If
TIPODIMATTONCINODIPOTENZIAMENTO=0
Else If TIPODIMATTONCINODIPOTENZIAMENTO=3 : Rem b(all)-
If _BARRE>0
Dec _BARRE : Proc MOSTRALEBARRERIMASTE
End If
If EFFETTISONORICARICATI=2
Sam Play VOCE,17 : Proc VOCESEGUENTE
Else If EFFETTISONORICARICATI=1
Bell 10
End If
TIPODIMATTONCINODIPOTENZIAMENTO=0
Else If TIPODIMATTONCINODIPOTENZIAMENTO=4 : Rem b(all)?
If Rnd(1)=1
TIPODIMATTONCINODIPOTENZIAMENTO=2
Else
TIPODIMATTONCINODIPOTENZIAMENTO=3
End If
Else If TIPODIMATTONCINODIPOTENZIAMENTO=5 : Rem B(ar)+
If LUNGHEZZADELLABARRA<2
Inc LUNGHEZZADELLABARRACAMBIATA
End If
If EFFETTISONORICARICATI=2
Sam Play VOCE,16 : Proc VOCESEGUENTE
Else If EFFETTISONORICARICATI=1
Bell 30
End If
TIPODIMATTONCINODIPOTENZIAMENTO=0
Else If TIPODIMATTONCINODIPOTENZIAMENTO=6 : Rem B(ar)-
If LUNGHEZZADELLABARRA>0
Dec LUNGHEZZADELLABARRACAMBIATA
End If
If EFFETTISONORICARICATI=2
Sam Play VOCE,17 : Proc VOCESEGUENTE
Else If EFFETTISONORICARICATI=1
Bell 10
End If
TIPODIMATTONCINODIPOTENZIAMENTO=0
Else If TIPODIMATTONCINODIPOTENZIAMENTO=7 : Rem B(ar)?
If Rnd(1)=1
TIPODIMATTONCINODIPOTENZIAMENTO=5
Else
TIPODIMATTONCINODIPOTENZIAMENTO=6
End If
Else If TIPODIMATTONCINODIPOTENZIAMENTO=8 : Rem D(uck)
_PAPEROINCAMPO= Not _PAPEROINCAMPO
If _PAPEROINCAMPO=VERO
If EFFETTISONORICARICATI=2
Sam Play VOCE,16 : Proc VOCESEGUENTE
Else If EFFETTISONORICARICATI=1
Bell 30
End If
Else
Proc CANCELLAILPAPERO
If EFFETTISONORICARICATI=2
Sam Play VOCE,17 : Proc VOCESEGUENTE
Else If EFFETTISONORICARICATI=1
Bell 10
End If
End If
TIPODIMATTONCINODIPOTENZIAMENTO=0
Else If TIPODIMATTONCINODIPOTENZIAMENTO=9 : Rem G(lue)
C0LLA= Not C0LLA
If C0LLA=VERO
If EFFETTISONORICARICATI=2
Sam Play VOCE,16 : Proc VOCESEGUENTE
Else If EFFETTISONORICARICATI=1
Bell 30
End If
Else
If EFFETTISONORICARICATI=2
Sam Play VOCE,17 : Proc VOCESEGUENTE
Else If EFFETTISONORICARICATI=1
Bell 10
End If
End If
TIPODIMATTONCINODIPOTENZIAMENTO=0
Else If TIPODIMATTONCINODIPOTENZIAMENTO=10 : Rem L(aser)+
If LASER=-1
LASER=1
Else If LASER=1
LASER=2
Else If LASER=2
LASER=3
End If
If EFFETTISONORICARICATI=2
Sam Play VOCE,16 : Proc VOCESEGUENTE
Else If EFFETTISONORICARICATI=1
Bell 30
End If
TIPODIMATTONCINODIPOTENZIAMENTO=0
Else If TIPODIMATTONCINODIPOTENZIAMENTO=11 : Rem L(aser)-
If LASER>0
Dec LASER
End If
If EFFETTISONORICARICATI=2
Sam Play VOCE,17 : Proc VOCESEGUENTE
Else If EFFETTISONORICARICATI=1
Bell 10
End If
TIPODIMATTONCINODIPOTENZIAMENTO=0
Else If TIPODIMATTONCINODIPOTENZIAMENTO=12 : Rem L(aser)?
If Rnd(1)=1
TIPODIMATTONCINODIPOTENZIAMENTO=10
Else
TIPODIMATTONCINODIPOTENZIAMENTO=11
End If
Else If TIPODIMATTONCINODIPOTENZIAMENTO=13 : Rem N(ext level)
MATTONCINIRIMASTI=MATTONCINI : MATTONCINI=0
If EFFETTISONORICARICATI=2
Sam Play VOCE,16 : Proc VOCESEGUENTE
Else If EFFETTISONORICARICATI=1
Bell 30
End If
TIPODIMATTONCINODIPOTENZIAMENTO=0
Else If TIPODIMATTONCINODIPOTENZIAMENTO=14 : Rem P(oints)+
If MATTONCINODIPOTENZIAMENTOASORPRESA=VERO
If PUNTEGGIO<9999800
Add PUNTEGGIO,180
End If
Else
If PUNTEGGIO<9999900
Add PUNTEGGIO,90
End If
End If
Proc MOSTRAILPUNTEGGIO[VERO]
If EFFETTISONORICARICATI=2
Sam Play VOCE,16 : Proc VOCESEGUENTE
Else If EFFETTISONORICARICATI=1
Bell 30
End If
TIPODIMATTONCINODIPOTENZIAMENTO=0
Else If TIPODIMATTONCINODIPOTENZIAMENTO=15 : Rem P(oints)-
If MATTONCINODIPOTENZIAMENTOASORPRESA=VERO
Add PUNTEGGIO,-220
Else
Add PUNTEGGIO,-110
End If
If PUNTEGGIO<0
PUNTEGGIO=0
End If
Proc MOSTRAILPUNTEGGIO[VERO]
If EFFETTISONORICARICATI=2
Sam Play VOCE,17 : Proc VOCESEGUENTE
Else If EFFETTISONORICARICATI=1
Bell 10
End If
TIPODIMATTONCINODIPOTENZIAMENTO=0
Else If TIPODIMATTONCINODIPOTENZIAMENTO=16 : Rem P(oints)?
If Rnd(1)=1
TIPODIMATTONCINODIPOTENZIAMENTO=14
Else
TIPODIMATTONCINODIPOTENZIAMENTO=15
End If
Else If TIPODIMATTONCINODIPOTENZIAMENTO=17 : Rem R(ow)+
If RIGA<3
T0GLILARIGA=RIGA : Inc RIGA
End If
If EFFETTISONORICARICATI=2
Sam Play VOCE,16 : Proc VOCESEGUENTE
Else If EFFETTISONORICARICATI=1
Bell 30
End If
TIPODIMATTONCINODIPOTENZIAMENTO=0
Else If TIPODIMATTONCINODIPOTENZIAMENTO=18 : Rem R(ow)-
If RIGA>0
T0GLILARIGA=RIGA : RIGA=0
End If
If EFFETTISONORICARICATI=2
Sam Play VOCE,17 : Proc VOCESEGUENTE
Else If EFFETTISONORICARICATI=1
Bell 10
End If
TIPODIMATTONCINODIPOTENZIAMENTO=0
Else If TIPODIMATTONCINODIPOTENZIAMENTO=19 : Rem R(ow)?
If Rnd(1)=1
TIPODIMATTONCINODIPOTENZIAMENTO=17
Else
TIPODIMATTONCINODIPOTENZIAMENTO=18
End If
Else If TIPODIMATTONCINODIPOTENZIAMENTO=20 : Rem S(peed)+
For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
If PALLINA(PALLINA)=VERO and VELOCITADELLAPALLINA#(PALLINA)<8
VELOCITADELLAPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)+0.5
If LAPALLINAHARIMBALZATOSUUNBORDODELLABARRA(PALLINA)
DELTAXPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)*2*Sgn(DELTAXPALLINA#(PALLINA))
DELTAYPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)/2.0*Sgn(DELTAYPALLINA#(PALLINA))
Else
DELTAXPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)*Sgn(DELTAXPALLINA#(PALLINA))
DELTAYPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)*Sgn(DELTAYPALLINA#(PALLINA))
End If
End If
Next PALLINA
If EFFETTISONORICARICATI=2
Sam Play VOCE,17 : Proc VOCESEGUENTE
Else If EFFETTISONORICARICATI=1
Bell 10
End If
TIPODIMATTONCINODIPOTENZIAMENTO=0
Else If TIPODIMATTONCINODIPOTENZIAMENTO=21 : Rem S(peed)-
For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
If PALLINA(PALLINA)=VERO and VELOCITADELLAPALLINA#(PALLINA)>0.5
VELOCITADELLAPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)-0.5
If LAPALLINAHARIMBALZATOSUUNBORDODELLABARRA(PALLINA)
DELTAXPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)*2*Sgn(DELTAXPALLINA#(PALLINA))
DELTAYPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)/2.0*Sgn(DELTAYPALLINA#(PALLINA))
Else
DELTAXPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)*Sgn(DELTAXPALLINA#(PALLINA))
DELTAYPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)*Sgn(DELTAYPALLINA#(PALLINA))
End If
End If
Next PALLINA
If EFFETTISONORICARICATI=2
Sam Play VOCE,16 : Proc VOCESEGUENTE
Else If EFFETTISONORICARICATI=1
Bell 30
End If
TIPODIMATTONCINODIPOTENZIAMENTO=0
Else If TIPODIMATTONCINODIPOTENZIAMENTO=22 : Rem S(peed)?
If Rnd(1)=1
TIPODIMATTONCINODIPOTENZIAMENTO=20
Else
TIPODIMATTONCINODIPOTENZIAMENTO=21
End If
Else If TIPODIMATTONCINODIPOTENZIAMENTO=23 : Rem (bar) V(elocity)+
If RITARDOMASSIMODELLABARRA>0
Add RITARDOMASSIMODELLABARRA,-2
End If
If EFFETTISONORICARICATI=2
Sam Play VOCE,16 : Proc VOCESEGUENTE
Else If EFFETTISONORICARICATI=1
Bell 30
End If
TIPODIMATTONCINODIPOTENZIAMENTO=0
Else If TIPODIMATTONCINODIPOTENZIAMENTO=24 : Rem (bar) V(elocity)-
If RITARDOMASSIMODELLABARRA<50
Add RITARDOMASSIMODELLABARRA,2
End If
If EFFETTISONORICARICATI=2
Sam Play VOCE,17 : Proc VOCESEGUENTE
Else If EFFETTISONORICARICATI=1
Bell 10
End If
TIPODIMATTONCINODIPOTENZIAMENTO=0
Else If TIPODIMATTONCINODIPOTENZIAMENTO=25 : Rem (bar) V(elocity)?
If Rnd(1)=1
TIPODIMATTONCINODIPOTENZIAMENTO=23
Else
TIPODIMATTONCINODIPOTENZIAMENTO=24
End If
Else If TIPODIMATTONCINODIPOTENZIAMENTO=26 : Rem X(treme)
RIMBALZODELLEPALLINESUIMATTONCINI= Not RIMBALZODELLEPALLINESUIMATTONCINI
If RIMBALZODELLEPALLINESUIMATTONCINI=FALSO
If EFFETTISONORICARICATI=2
Sam Play VOCE,16 : Proc VOCESEGUENTE
Else If EFFETTISONORICARICATI=1
Bell 30
End If
Else
If EFFETTISONORICARICATI=2
Sam Play VOCE,17 : Proc VOCESEGUENTE
Else If EFFETTISONORICARICATI=1
Bell 10
End If
End If
TIPODIMATTONCINODIPOTENZIAMENTO=0
Else If TIPODIMATTONCINODIPOTENZIAMENTO=27 : Rem y+
If YBARRA<247
Add YBARRA,5
End If
If EFFETTISONORICARICATI=2
Sam Play VOCE,16 : Proc VOCESEGUENTE
Else If EFFETTISONORICARICATI=1
Bell 30
End If
TIPODIMATTONCINODIPOTENZIAMENTO=0
Else If TIPODIMATTONCINODIPOTENZIAMENTO=28 : Rem y-
If YBARRA>197
Add YBARRA,-5
End If
If EFFETTISONORICARICATI=2
Sam Play VOCE,17 : Proc VOCESEGUENTE
Else If EFFETTISONORICARICATI=1
Bell 10
End If
TIPODIMATTONCINODIPOTENZIAMENTO=0
Else If TIPODIMATTONCINODIPOTENZIAMENTO=29 : Rem b(all)?
If Rnd(1)=1
TIPODIMATTONCINODIPOTENZIAMENTO=27
Else
TIPODIMATTONCINODIPOTENZIAMENTO=28
End If
Else If TIPODIMATTONCINODIPOTENZIAMENTO=MATTONCINIDIPOTENZIAMENTO : Rem ?
TIPODIMATTONCINODIPOTENZIAMENTO=Rnd(18)+1
End If
Until TIPODIMATTONCINODIPOTENZIAMENTO=0
End If
End Proc
Procedure MATTONCINODIPOTENZIAMENTOUSCITODALCAMPODIGIOCO[MATTONCINODIPOTENZIAMENTO]
'check if the specified bonus brick has gone out of the game field
If YMATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)>255
Proc CANCELLAILMATTONCINODIPOTENZIAMENTO[MATTONCINODIPOTENZIAMENTO]
End If
End Proc
Procedure METTIILPANNELLO
'put the panel in the game field
XPANNELLO=Screen Width-LARGHEZZAPANNELLO
Paste Bob XPANNELLO,0,51 : Paste Bob XPANNELLO,128,52
End Proc
Procedure METTIECONTAIMATTONCINI
'put the bricks in the game field and count them
MATTONCINI=0
For MATTONCINO=0 To 246
If MATTONCINO(MATTONCINO)>0
Paste Bob X0ZONA(MATTONCINO),Y0ZONA(MATTONCINO),82+MATTONCINO(MATTONCINO)
Inc MATTONCINI
Else
Ink 0 : Bar X0ZONA(MATTONCINO),Y0ZONA(MATTONCINO) To X0ZONA(MATTONCINO)+19,Y0ZONA(MATTONCINO)+9
End If
Next MATTONCINO
End Proc
Procedure METTIILGIOCOINPAUSA
'pause the game
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE["",0,0,0,-1]
MESSAGGIO$="The game is paused."+ACAPO$
MESSAGGIO$=MESSAGGIO$+"Press a (mouse) key to continue..."
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[MESSAGGIO$,22,20,1,0]
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1]
End Proc
Procedure MOLLAILGUANO
'drop the guano
If GUANOINCAMPO=VERO
If GUANOMOLLATO=FALSO
XGUANO=XPAPEROALIENO : YGUANO=YPAPEROALIENO+35 : GUANOMOLLATO=VERO
Else
Bob OGGETTOGUANO,XGUANO,YGUANO,IMMAGINEGUANO
Proc LABARRAESTATACOLPITADALGUANO
Proc ILGUANOEUSCITODALCAMPODIGIOCO
Add YGUANO,3
End If
End If
End Proc
Procedure MOSTRAICREDITI
'show the credits
CREDITI$="EsseEmmeErre Sofware Solutions"+ACAPO$
CREDITI$=CREDITI$+"presents..."+ACAPO$
CREDITI$=CREDITI$+"************"+ACAPO$
CREDITI$=CREDITI$+"* MATTONITE *"+ACAPO$
CREDITI$=CREDITI$+"************"+ACAPO$
CREDITI$=CREDITI$+"by Stefano Maria Regattin"+ACAPO$
CREDITI$=CREDITI$+"piazza Pietro Gasparri, 4/U"+ACAPO$
CREDITI$=CREDITI$+"20161 Milano (Milan) Italia (Italy)"+ACAPO$
CREDITI$=CREDITI$+"http://xoomer.virgilio.it/aregat/"+ACAPO$
CREDITI$=CREDITI$+"mattonite@esseemmeerre.mailshell.com"+ACAPO$
CREDITI$=CREDITI$+"ICQ#: 113412377"+ACAPO$
CREDITI$=CREDITI$+"This game, its editor and the related source"+ACAPO$
CREDITI$=CREDITI$+"codes are freely shared out."+ACAPO$
CREDITI$=CREDITI$+"They have been created by AMOS Professional 2.0"+ACAPO$
CREDITI$=CREDITI$+"and compiled by AMOS Professional Compiler 2.0."+ACAPO$
CREDITI$=CREDITI$+"The source codes don't require any additional"+ACAPO$
CREDITI$=CREDITI$+"extension."+ACAPO$
CREDITI$=CREDITI$+"If you will create a new game starting from these"+ACAPO$
CREDITI$=CREDITI$+"source codes, let me know and don't forget to"+ACAPO$
CREDITI$=CREDITI$+"email me and mention me in your resulting creation."+ACAPO$
CREDITI$=CREDITI$+"One day I have asked to my major sister Antonella"+ACAPO$
CREDITI$=CREDITI$+"if she would liked I created a game for her,"+ACAPO$
CREDITI$=CREDITI$+"assuring her I was able to create almost any"+ACAPO$
CREDITI$=CREDITI$+"kind of game she wanted."+ACAPO$
CREDITI$=CREDITI$+"The answer was yes and she specified a game"+ACAPO$
CREDITI$=CREDITI$+"with a bar, a bouncing ball over the bar and"+ACAPO$
CREDITI$=CREDITI$+"dozens of bricks deletable by the ball hit,"+ACAPO$
CREDITI$=CREDITI$+"gaining points for the hits."+ACAPO$
CREDITI$=CREDITI$+"So I started the development of this game and"+ACAPO$
CREDITI$=CREDITI$+"she called it Mattonite, that in italian means"+ACAPO$
CREDITI$=CREDITI$+"brickache."+ACAPO$
CREDITI$=CREDITI$+"The purpose of the game is simple: destroy all"+ACAPO$
CREDITI$=CREDITI$+"the bricks by the ball hits to overcome all"+ACAPO$
CREDITI$=CREDITI$+"the levels and collect bonus bricks to improve"+ACAPO$
CREDITI$=CREDITI$+"playability."+ACAPO$
CREDITI$=CREDITI$+"The duck eats all the bricks, but avoid the alien"+ACAPO$
CREDITI$=CREDITI$+"duck's guano!"+ACAPO$
CREDITI$=CREDITI$+"Avoid the reflected laser ray also!"+ACAPO$
CREDITI$=CREDITI$+"Don't hit the mortal boing with the bar!"+ACAPO$
CREDITI$=CREDITI$+"You must hit this by a ball or by the laser ray."+ACAPO$
CREDITI$=CREDITI$+"The three flashing cyan digits report the bars"+ACAPO$
CREDITI$=CREDITI$+"left."+ACAPO$
CREDITI$=CREDITI$+"The three flashing orange digits report the"+ACAPO$
CREDITI$=CREDITI$+"current level."+ACAPO$
CREDITI$=CREDITI$+"The three flashing rainbow colours digits report"+ACAPO$
CREDITI$=CREDITI$+"the score position relative to the top hundred"+ACAPO$
CREDITI$=CREDITI$+"scores."+ACAPO$
CREDITI$=CREDITI$+"The seven flashing cyan digits column report"+ACAPO$
CREDITI$=CREDITI$+"the score."+ACAPO$
CREDITI$=CREDITI$+"The seven flashing orange digits column report"+ACAPO$
CREDITI$=CREDITI$+"the first position score."+ACAPO$
CREDITI$=CREDITI$+"The seven flashing rainbow colour digits column"+ACAPO$
CREDITI$=CREDITI$+"report the current level bonus."+ACAPO$
CREDITI$=CREDITI$+"Press the space bar to shock the balls."+ACAPO$
CREDITI$=CREDITI$+"Press the shift keys to fire the laser ray over"+ACAPO$
CREDITI$=CREDITI$+"the bricks to hit the boings or, better, to hit"+ACAPO$
CREDITI$=CREDITI$+"the ballthief!"+ACAPO$
CREDITI$=CREDITI$+"Press the P key to pause the game."+ACAPO$
CREDITI$=CREDITI$+"Press a (mouse) key to scroll quickly the text"+ACAPO$
CREDITI$=CREDITI$+"or press the Esc key to leave the text."+ACAPO$
CREDITI$=CREDITI$+"This is the end...Enjoy!"
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[CREDITI$,22,22,1,250]
End Proc
Procedure MOSTRAILBONUS[M0DO]
'show the bonus
If M0DO=VERO
CIFRA=BONUS/1000000 mod 10
Paste Bob 305,120,73+CIFRA
CIFRA=BONUS/100000 mod 10
Paste Bob 305,138,73+CIFRA
CIFRA=BONUS/10000 mod 10
Paste Bob 305,156,73+CIFRA
CIFRA=BONUS/1000 mod 10
Paste Bob 305,174,73+CIFRA
CIFRA=BONUS/100 mod 10
Paste Bob 305,192,73+CIFRA
CIFRA=BONUS/10 mod 10
Paste Bob 305,210,73+CIFRA
CIFRA=BONUS mod 10
Paste Bob 305,228,73+CIFRA
Else
CIFRA=BONUS mod 10
Paste Bob 305,228,73+CIFRA
If CIFRA=9
CIFRA=BONUS/10 mod 10
Paste Bob 305,210,73+CIFRA
If CIFRA=9
CIFRA=BONUS/100 mod 10
Paste Bob 305,192,73+CIFRA
If CIFRA=9
CIFRA=BONUS/1000 mod 10
Paste Bob 305,174,73+CIFRA
If CIFRA=9
CIFRA=BONUS/10000 mod 10
Paste Bob 305,156,73+CIFRA
If CIFRA=9
CIFRA=BONUS/100000 mod 10
Paste Bob 305,138,73+CIFRA
If CIFRA=9
CIFRA=BONUS/1000000 mod 10
Paste Bob 305,120,73+CIFRA
End If
End If
End If
End If
End If
End If
End If
End Proc
Procedure MOSTRAILLASER
'show the laser beam over the bar
If LASER>0
Bob OGGETTOLASER,Int(XBARRA),YBARRA,IMMAGINELASER+LASER
Else If LASER=0
Proc T0GLIILLASER
LASER=-1
End If
End Proc
Procedure MOSTRAILLIVELLO
'shov the level
CIFRA=LIVELLO/100 mod 10
Paste Bob 273,29,63+CIFRA
CIFRA=LIVELLO/10 mod 10
Paste Bob 289,29,63+CIFRA
CIFRA=LIVELLO mod 10
Paste Bob 305,29,63+CIFRA
End Proc
Procedure MOSTRAILPUNTEGGIO[M0DO]
'show the score
If M0DO=VERO
CIFRA=PUNTEGGIO/1000000 mod 10
Paste Bob 273,120,53+CIFRA
CIFRA=PUNTEGGIO/100000 mod 10
Paste Bob 273,138,53+CIFRA
CIFRA=PUNTEGGIO/10000 mod 10
Paste Bob 273,156,53+CIFRA
CIFRA=PUNTEGGIO/1000 mod 10
Paste Bob 273,174,53+CIFRA
CIFRA=PUNTEGGIO/100 mod 10
Paste Bob 273,192,53+CIFRA
CIFRA=PUNTEGGIO/10 mod 10
Paste Bob 273,210,53+CIFRA
CIFRA=PUNTEGGIO mod 10
Paste Bob 273,228,53+CIFRA
Else
CIFRA=PUNTEGGIO mod 10
Paste Bob 273,228,53+CIFRA
If CIFRA=0
CIFRA=PUNTEGGIO/10 mod 10
Paste Bob 273,210,53+CIFRA
If CIFRA=0
CIFRA=PUNTEGGIO/100 mod 10
Paste Bob 273,192,53+CIFRA
If CIFRA=0
CIFRA=PUNTEGGIO/1000 mod 10
Paste Bob 273,174,53+CIFRA
If CIFRA=0
CIFRA=PUNTEGGIO/10000 mod 10
Paste Bob 273,156,53+CIFRA
If CIFRA=0
CIFRA=PUNTEGGIO/100000 mod 10
Paste Bob 273,138,53+CIFRA
If CIFRA=0
CIFRA=PUNTEGGIO/1000000 mod 10
Paste Bob 273,120,53+CIFRA
End If
End If
End If
End If
End If
End If
End If
If MOSTRASOLOILPUNTEGGIOMASSIMO=1 or POSIZIONE=1
If PUNTEGGIO>PUNTEGGIOMASSIMO
PUNTEGGIOMASSIMO=PUNTEGGIO
Proc MOSTRAILPUNTEGGIOMASSIMO[FALSO]
End If
Else
PUNTEGGIOSUPERIORE=Val(PUNTEGGIODELGIOCATORE$(POSIZIONE-2))
If PUNTEGGIO>PUNTEGGIOSUPERIORE
Proc MOSTRALAPOSIZIONE
Proc MOSTRAILPUNTEGGIOMASSIMO[VERO]
End If
End If
End Proc
Procedure MOSTRAILPUNTEGGIOMASSIMO[M0DO]
'show the better or the best score
If MOSTRASOLOILPUNTEGGIOMASSIMO=1 or POSIZIONE=1
PUNTEGGIOSUPERIORE=PUNTEGGIOMASSIMO
Else
PUNTEGGIOSUPERIORE=Val(PUNTEGGIODELGIOCATORE$(POSIZIONE-2))
End If
If M0DO=VERO
CIFRA=PUNTEGGIOSUPERIORE/1000000 mod 10
Paste Bob 289,120,63+CIFRA
CIFRA=PUNTEGGIOSUPERIORE/100000 mod 10
Paste Bob 289,138,63+CIFRA
CIFRA=PUNTEGGIOSUPERIORE/10000 mod 10
Paste Bob 289,156,63+CIFRA
CIFRA=PUNTEGGIOSUPERIORE/1000 mod 10
Paste Bob 289,174,63+CIFRA
CIFRA=PUNTEGGIOSUPERIORE/100 mod 10
Paste Bob 289,192,63+CIFRA
CIFRA=PUNTEGGIOSUPERIORE/10 mod 10
Paste Bob 289,210,63+CIFRA
CIFRA=PUNTEGGIOSUPERIORE mod 10
Paste Bob 289,228,63+CIFRA
Else
CIFRA=PUNTEGGIOSUPERIORE mod 10
Paste Bob 289,228,63+CIFRA
If CIFRA=0
CIFRA=PUNTEGGIOSUPERIORE/10 mod 10
Paste Bob 289,210,63+CIFRA
If CIFRA=0
CIFRA=PUNTEGGIOSUPERIORE/100 mod 10
Paste Bob 289,192,63+CIFRA
If CIFRA=0
CIFRA=PUNTEGGIOSUPERIORE/1000 mod 10
Paste Bob 289,174,63+CIFRA
If CIFRA=0
CIFRA=PUNTEGGIOSUPERIORE/10000 mod 10
Paste Bob 289,156,63+CIFRA
If CIFRA=0
CIFRA=PUNTEGGIOSUPERIORE/100000 mod 10
Paste Bob 289,138,63+CIFRA
If CIFRA=0
CIFRA=PUNTEGGIOSUPERIORE/1000000 mod 10
Paste Bob 289,120,63+CIFRA
End If
End If
End If
End If
End If
End If
End If
End Proc
Procedure MOSTRAILRAGGIOLASER
'show the laser ray
If RAGGIOLASERSPARATO=VERO
Bob OGGETTORAGGIOLASER,XLASER,YLASER,IMMAGINERAGGIOLASER
If RAGGIOLASERRIFLESSO=VERO
If YLASER<255
Add YLASER,5
Else
RAGGIOLASERRIFLESSO=FALSO
Proc CANCELLAILRAGGIOLASER
End If
Else
If YLASER>0
Add YLASER,-5
Else
Proc CANCELLAILRAGGIOLASER
End If
End If
Bob Update
End If
End Proc
Procedure MOSTRAIPUNTEGGIDEICENTOMIGLIORIGIOCATORI
'show the top hundred player scores
If Exist(PUNTEGGI$) and CENTOGIOCATORI$<>""
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[CENTOGIOCATORI$,20,22,1,250]
Else
NONCISONOGIOCATORI$="No players till now..."+ACAPO$
NONCISONOGIOCATORI$=NONCISONOGIOCATORI$+"Press a (mouse) key to continue"
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[NONCISONOGIOCATORI$,21,20,1,250]
End If
End Proc
Procedure MOSTRAILTEMPOTRASCORSODIGIOCOESALUTAILGIOCATORE
'show the game time and greets the player
MESSAGGIOFINALE$="The game is finished."+ACAPO$
If TEMP0TRASCORSODIGIOCO>0
GIORNI=TEMP0TRASCORSODIGIOCO/4320000 : GIORNI$=Str$(GIORNI)
_ORE=TEMP0TRASCORSODIGIOCO/180000 mod 24 : _ORE$=Str$(_ORE)
M1NUTI=TEMP0TRASCORSODIGIOCO/3000 mod 60 : M1NUTI$=Str$(M1NUTI)
SECONDI=TEMP0TRASCORSODIGIOCO/50 mod 60 : SECONDI$=Str$(SECONDI)
MESSAGGIOFINALE$=MESSAGGIOFINALE$+"You have played for"
If GIORNI=1
MESSAGGIOFINALE$=MESSAGGIOFINALE$+GIORNI$+" day,"
Else
MESSAGGIOFINALE$=MESSAGGIOFINALE$+GIORNI$+" days,"
End If
If _ORE=1
MESSAGGIOFINALE$=MESSAGGIOFINALE$+_ORE$+" hour,"
Else
MESSAGGIOFINALE$=MESSAGGIOFINALE$+_ORE$+" hours,"
End If
MESSAGGIOFINALE$=MESSAGGIOFINALE$+ACAPO$
If M1NUTI=1
MESSAGGIOFINALE$=MESSAGGIOFINALE$+M1NUTI$+" minute and"
Else
MESSAGGIOFINALE$=MESSAGGIOFINALE$+M1NUTI$+" minutes and"
End If
If SECONDI=1
MESSAGGIOFINALE$=MESSAGGIOFINALE$+SECONDI$+" second."
Else
MESSAGGIOFINALE$=MESSAGGIOFINALE$+SECONDI$+" seconds."
End If
MESSAGGIOFINALE$=MESSAGGIOFINALE$+ACAPO$
End If
MESSAGGIOFINALE$=MESSAGGIOFINALE$+"I hope you have enjoyed."+ACAPO$
MESSAGGIOFINALE$=MESSAGGIOFINALE$+"Bye bye!"
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[MESSAGGIOFINALE$,20,22,1,1000]
End Proc
Procedure MOSTRALABARRA
'show the bar
If LUNGHEZZADELLABARRA=0
Bob OGGETTOCENTRODELLABARRA,Int(XBARRA),YBARRA,5
Bob OGGETTOLATIDELLABARRA,Int(XBARRA),YBARRA,6
Else If LUNGHEZZADELLABARRA=1
Bob OGGETTOCENTRODELLABARRA,Int(XBARRA),YBARRA,1
Bob OGGETTOLATIDELLABARRA,Int(XBARRA),YBARRA,2
Else If LUNGHEZZADELLABARRA=2
Bob OGGETTOCENTRODELLABARRA,Int(XBARRA),YBARRA,3
Bob OGGETTOLATIDELLABARRA,Int(XBARRA),YBARRA,4
End If
End Proc
Procedure MOSTRALAPOSIZIONE
'show the current player position
For POSIZIONE=1 To 100
If PUNTEGGIO>Val(PUNTEGGIODELGIOCATORE$(POSIZIONE-1))
Exit
Else If PUNTEGGIODELGIOCATORE$(POSIZIONE-1)=""
Exit
End If
Next POSIZIONE
CIFRA=POSIZIONE/100 mod 10
Paste Bob 273,47,73+CIFRA
CIFRA=POSIZIONE/10 mod 10
Paste Bob 289,47,73+CIFRA
CIFRA=POSIZIONE mod 10
Paste Bob 305,47,73+CIFRA
End Proc
Procedure MOSTRALARIGA[TIPODIRIGA]
'show the row
If TIPODIRIGA=1
IMMAGINERIGA=IMMAGINERIGAUNO
Else If TIPODIRIGA=2
IMMAGINERIGA=IMMAGINERIGADUE
Else If TIPODIRIGA=3
IMMAGINERIGA=IMMAGINERIGATRE
End If
If XRIGA>0
Bob OGGETTORIGA,XRIGA,251,IMMAGINERIGA
Else
If T0GLILARIGA>0
Proc T0GLILARIGA
T0GLILARIGA=0
DURATADELLARIGA=-1
End If
End If
Bob Update
End Proc
Procedure MOSTRALEOPZIONIDIGIOCO
'show the game options
_INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"SetVariable 0,TextHeight 2+;"
_INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"SetVariable 1,'Bonus bricks Coloured' TextWidth 10+;"
_INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"SetVariable 2,0VAriable 5+ 4* 3+;"
_INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"BAse ScreenWidth 1VAriable- 2/,ScreenHeight 2VAriable- 2/;"
_INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"SIze 1VAriable,2VAriable;"
_INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"INk 38,0,0;"
_INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"GraphicBox 0,0,1VAriable 1-,2VAriable 1-;"
_INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"INk 37,0,0;"
_INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"GraphicLine 0,2VAriable 2-,0,0;"
_INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"GraphicLine 0,0,1VAriable 2-,0;"
_INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"INk 39,0,0;"
_INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"GraphicLine 1VAriable 1-,1,1VAriable 1-,2VAriable 1-;"
_INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"GraphicLine 1VAriable 1-,2VAriable 1-,1,2VAriable 1-;"
_INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"SetVariable 3,'Highest' TextWidth 1- 2+;"
_INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"SetVariable 4,'Coloured' TextWidth 1- 2+;"
_INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"SetVariable 5,'Disabled' TextWidth 1- 2+;"
_INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"SetVariable 6,'Disabled' TextWidth 1- 2+;"
_INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"PrintOutline 3,3,'Top score',21 32+,21;"
_INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"PrintOutline 3,3 0VAriable+ 5+,'Bonus bricks',20 32+,20;"
_INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"PrintOutline 3,0VAriable 5+ 2* 3+,'Video sync',21 32+,21;"
_INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"PrintOutline 3,0VAriable 5+ 3* 3+,'Music',20 32+,20;"
_INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"BUtton 1,1VAriable 3VAriable- 1- 5-,2,3VAriable 4+,0VAriable 4+,7VAriable,0,1;"
_INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"[INk 38,0,0;"
_INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"GraphicBox 0,0,3VAriable 3+,0VAriable 3+;"
_INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"IF ButtonPosition 0=;[SetWriting 1;PrintOutline 3,3,'Higher',7,6;]"
_INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"IF ButtonPosition 1=;[SetWriting 1;PrintOutline 3,3,'Highest',7,6;]"
_INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"INk 37,0,0;"
_INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"GraphicLine 0,0VAriable 3+,0,0;"
_INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"GraphicLine 0,0,3VAriable 3+,0;"
_INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"INk 39,0,0;"
_INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"GraphicLine 3VAriable 3+,1,3VAriable 3+,0VAriable 3+;"
_INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"GraphicLine 3VAriable 3+,0VAriable 3+,1,0VAriable 3+;]"
_INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"[]"
_INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"BUtton 2,1VAriable 4VAriable- 5- 1-,0VAriable 1- 5+ 3+,4VAriable 1- 4+,0VAriable 4+,8VAriable,0,1;"
_INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"[INk 38,0,0;"
_INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"GraphicBox 0,0,4VAriable 3+,0VAriable 3+;"
_INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"IF ButtonPosition 0=;[SetWriting 1;PrintOutline 3,3,'Standard',7,6;]"
_INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"IF ButtonPosition 1=;[SetWriting 1;PrintOutline 3,3,'Coloured',7,6;]"
_INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"INk 37,0,0;"
_INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"GraphicLine 0,0VAriable 3+,0,0;"
_INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"GraphicLine 0,0,4VAriable 3+,0;"
_INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"INk 39,0,0;"
_INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"GraphicLine 4VAriable 3+,1,4VAriable 3+,0VAriable 3+;"
_INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"GraphicLine 4VAriable 3+,0VAriable 3+,1,0VAriable 3+;]"
_INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"[]"
_INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"BUtton 3,1VAriable 5VAriable- 5- 1-,0VAriable 5+ 2* 1- 3+,5VAriable 4+,0VAriable 4+,9VAriable,0,1;"
_INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"[INk 38,0,0;"
_INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"GraphicBox 0,0,5VAriable 3+,0VAriable 3+;"
_INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"IF ButtonPosition 0=;[SetWriting 1;PrintOutline 3,3,'Disabled',7,6;]"
_INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"IF ButtonPosition 1=;[SetWriting 1;PrintOutline 3,3,'Enabled',7,6;]"
_INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"INk 37,0,0;"
_INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"GraphicLine 0,0VAriable 3+,0,0;"
_INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"GraphicLine 0,0,5VAriable 3+,0;"
_INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"INk 39,0,0;"
_INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"GraphicLine 5VAriable 3+,1,5VAriable 3+,0VAriable 3+;"
_INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"GraphicLine 5VAriable 3+,0VAriable 3+,1,0VAriable 3+;]"
_INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"[]"
_INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"BUtton 4,1VAriable 6VAriable- 5- 1-,0VAriable 5+ 3* 1- 3+,6VAriable 4+,0VAriable 4+,10VAriable,0,1;"
_INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"[INk 38,0,0;"
_INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"GraphicBox 0,0,5VAriable 3+,0VAriable 3+;"
_INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"IF ButtonPosition 0=;[SetWriting 1;PrintOutline 3,3,'Disabled',7,6;]"
_INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"IF ButtonPosition 1=;[SetWriting 1;PrintOutline 3,3,'Enabled',7,6;]"
_INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"INk 37,0,0;"
_INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"GraphicLine 0,0VAriable 3+,0,0;"
_INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"GraphicLine 0,0,5VAriable 3+,0;"
_INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"INk 39,0,0;"
_INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"GraphicLine 6VAriable 3+,1,5VAriable 3+,0VAriable 3+;"
_INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"GraphicLine 6VAriable 3+,0VAriable 3+,1,0VAriable 3+;]"
_INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"[ButtonChange 4,10VAriable;]"
_INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"EXit;"
MESSAGGIOPERLEOPZIONI$="Normally the seven flashing orange digits"+ACAPO$
MESSAGGIOPERLEOPZIONI$=MESSAGGIOPERLEOPZIONI$+"column reports the highest score but, in"+ACAPO$
MESSAGGIOPERLEOPZIONI$=MESSAGGIOPERLEOPZIONI$+"the following requester, you can enable"+ACAPO$
MESSAGGIOPERLEOPZIONI$=MESSAGGIOPERLEOPZIONI$+"it showing the lowerst of the top hundred"+ACAPO$
MESSAGGIOPERLEOPZIONI$=MESSAGGIOPERLEOPZIONI$+"scores that is higher than your score!"+ACAPO$
MESSAGGIOPERLEOPZIONI$=MESSAGGIOPERLEOPZIONI$+"In the requester there is also an option"+ACAPO$
MESSAGGIOPERLEOPZIONI$=MESSAGGIOPERLEOPZIONI$+"to enable the video sync for a playable"+ACAPO$
MESSAGGIOPERLEOPZIONI$=MESSAGGIOPERLEOPZIONI$+"game on a very fast Amiga!"+ACAPO$
MESSAGGIOPERLEOPZIONI$=MESSAGGIOPERLEOPZIONI$+"You can choose also to have coloured or"+ACAPO$
MESSAGGIOPERLEOPZIONI$=MESSAGGIOPERLEOPZIONI$+"standard bonus bricks into the game."+ACAPO$
MESSAGGIOPERLEOPZIONI$=MESSAGGIOPERLEOPZIONI$+"Now you can have a background motive."+ACAPO$
MESSAGGIOPERLEOPZIONI$=MESSAGGIOPERLEOPZIONI$+"Press a (mouse) key for the requester"+ACAPO$
MESSAGGIOPERLEOPZIONI$=MESSAGGIOPERLEOPZIONI$+"and enable or disable the options as"+ACAPO$
MESSAGGIOPERLEOPZIONI$=MESSAGGIOPERLEOPZIONI$+"you wish..."+ACAPO$
MESSAGGIOPERLEOPZIONI$=MESSAGGIOPERLEOPZIONI$+"Press the Esc key to leave these options..."
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[MESSAGGIOPERLEOPZIONI$,20,20,1,1000]
Show : Autoback 1 : Screen Copy Physic To Logic
Dialog Open 1,_INTERFACCIAPERLEOPZIONI$
Vdialog(1,3)=FONTEDICARATTERI
Vdialog(1,7)=MOSTRASOLOILPUNTEGGIOMASSIMO
Vdialog(1,8)=MATTONCINIDIPOTENZIAMENTOCOLORATI
Vdialog(1,9)=RITARDODELGIOCO
Vdialog(1,10)=MOTIVODIFONDOCARICATO
_INTERFACCIAPERLEOPZIONI=Dialog Run(1)
DURATADELLINTERFACCIAPERLEOPZIONI=120
Repeat
Screen Swap : Screen Copy Physic To Logic
PRECEDENTEMOSTRASOLOILPUNTEGGIOMASSIMO=MOSTRASOLOILPUNTEGGIOMASSIMO
MOSTRASOLOILPUNTEGGIOMASSIMO=Rdialog(1,1)
If MOSTRASOLOILPUNTEGGIOMASSIMO<>PRECEDENTEMOSTRASOLOILPUNTEGGIOMASSIMO
If MOSTRASOLOILPUNTEGGIOMASSIMO=1
If EFFETTISONORICARICATI=2
Sam Play VOCE,17 : Proc VOCESEGUENTE
Else If EFFETTISONORICARICATI=1
Bell 10
End If
Else
If EFFETTISONORICARICATI=2
Sam Play VOCE,16 : Proc VOCESEGUENTE
Else If EFFETTISONORICARICATI=1
Bell 30
End If
End If
Screen Swap : Screen Copy Physic To Logic
End If
PRECEDENTEMATTONCINIDIPOTENZIAMENTOCOLORATI=MATTONCINIDIPOTENZIAMENTOCOLORATI
MATTONCINIDIPOTENZIAMENTOCOLORATI=Rdialog(1,2)
If MATTONCINIDIPOTENZIAMENTOCOLORATI<>PRECEDENTEMATTONCINIDIPOTENZIAMENTOCOLORATI
If MATTONCINIDIPOTENZIAMENTOCOLORATI=1
OGGETTI$=OGGETTICOLORATI$
If EFFETTISONORICARICATI=2
Sam Play VOCE,16 : Proc VOCESEGUENTE
Else If EFFETTISONORICARICATI=1
Bell 30
End If
Else
OGGETTI$=OGGETTISTANDARD$
If EFFETTISONORICARICATI=2
Sam Play VOCE,17 : Proc VOCESEGUENTE
Else If EFFETTISONORICARICATI=1
Bell 10
End If
End If
Screen Swap : Screen Copy Physic To Logic
Proc CARICAGLIOGGETTI
Proc CREALEIMMAGINIPERLERIGHE
If M0DULOMEDCARICATO=True
Proc SUONAILMODULOMED
End If
End If
PRECEDENTERITARDODELGIOCO=RITARDODELGIOCO
RITARDODELGIOCO=Rdialog(1,3)
If RITARDODELGIOCO<>PRECEDENTERITARDODELGIOCO
If RITARDODELGIOCO=1
If EFFETTISONORICARICATI=2
Sam Play VOCE,16 : Proc VOCESEGUENTE
Else If EFFETTISONORICARICATI=1
Bell 30
End If
Else
If EFFETTISONORICARICATI=2
Sam Play VOCE,17 : Proc VOCESEGUENTE
Else If EFFETTISONORICARICATI=1
Bell 10
End If
End If
Screen Swap : Screen Copy Physic To Logic
End If
If M0DULOMEDCARICATO=False
PRECEDENTEMOTIVODIFONDOCARICATO=MOTIVODIFONDOCARICATO
MOTIVODIFONDOCARICATO=Rdialog(1,4)
If MOTIVODIFONDOCARICATO<>PRECEDENTEMOTIVODIFONDOCARICATO
If MOTIVODIFONDOCARICATO=1
Proc CARICAILMOTIVODIFONDO
If MOTIVODIFONDOCARICATO=1
Proc CARICARAWOIFF
Erase BANCOTEMPORANEO
' Every On
' Every 900 Proc SUONAILMOTIVODIFONDO
End If
End If
If MOTIVODIFONDOCARICATO=1
If EFFETTISONORICARICATI=2
Sam Play VOCE,16 : Proc VOCESEGUENTE
Else If EFFETTISONORICARICATI=1
Bell 30
End If
Else
If EFFETTISONORICARICATI=2
Sam Play VOCE,17 : Proc VOCESEGUENTE
Else If EFFETTISONORICARICATI=1
Bell 10
End If
' Every Off
Erase BANCOMOTIVODIFONDO
Erase BANCOTEMPORANEO
End If
Vdialog(1,10)=MOTIVODIFONDOCARICATO
Screen Swap : Screen Copy Physic To Logic
End If
End If
_ASPETTA[25]
If DURATADELLINTERFACCIAPERLEOPZIONI>0
Dec DURATADELLINTERFACCIAPERLEOPZIONI
Else
TASTO=27
End If
Until TASTO=27
Dialog Close 1
Hide
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1]
Autoback 0
End Proc
Procedure MOSTRALEBARRERIMASTE
'show the remained balls
_BARRERIMASTE=_BARRE-1
If _BARRERIMASTE>-1
CIFRA=_BARRERIMASTE/100 mod 10
Paste Bob 273,11,53+CIFRA
CIFRA=_BARRERIMASTE/10 mod 10
Paste Bob 289,11,53+CIFRA
CIFRA=_BARRERIMASTE mod 10
Paste Bob 305,11,53+CIFRA
End If
End Proc
Procedure NEMICIINCAMPO
'manage the enemies
If COMPORTAMENTODEINEMICI=0
If NEMICOUNO(0)=0
XDIPARTENZANEMICOUNO(0)=Rnd(1)
If XDIPARTENZANEMICOUNO(0)=0
XNEMICOUNO(0)=-11
ROTAZIONENEMICOUNO(0)=-1
Else If XDIPARTENZANEMICOUNO(0)=1
XNEMICOUNO(0)=Screen Width-LARGHEZZAPANNELLO+11
ROTAZIONENEMICOUNO(0)=1
End If
YNEMICOUNO(0)=Rnd(17*11)+11
LIMITI[YNEMICOUNO(0),11,18*11-1] : YNEMICOUNO(0)=Param
NEMICOUNO(0)=Rnd(35)+1
Else
If RITARDODEINEMICIUNO=0
Add NEMICOUNO(0),ROTAZIONENEMICOUNO(0),1 To IMMAGININEMICOUNO
If XDIPARTENZANEMICOUNO(0)=0
Inc XNEMICOUNO(0)
Else If XDIPARTENZANEMICOUNO(0)=1
Dec XNEMICOUNO(0)
End If
Bob OGGETTONEMICOUNO,XNEMICOUNO(0),YNEMICOUNO(0),IMMAGINENEMICOUNO(NEMICOUNO(0)-1)
Proc ILNEMICOUNOESTATOCOLPITO[0]
Proc ILNEMICOUNOEUSCITODALCAMPODIGIOCO[0]
End If
Add RITARDODEINEMICIUNO,1,0 To 4
End If
End If
End Proc
Procedure _PAPEROALIENOINCAMPO
'manage the alien duck
If _PAPEROALIENO=0
XPAPEROALIENO=Rnd(XFINALERIGA) : YPAPEROALIENO=-20
GRADIPAPEROALIENO=45 : _PAPEROALIENO=1
Else
If RITARDOPAPERO=0
Add IMMAGINEPAPEROALIENO,1,0 To IMMAGINIPAPERO-1
Inc YPAPEROALIENO
End If
If _PAPEROINCAMPO=FALSO
Add RITARDOPAPERO,1,0 To 12
End If
Add GRADIPAPEROALIENO,_PAPEROALIENO
If GRADIPAPEROALIENO=90
GUANOINCAMPO=VERO
Else If _PAPEROALIENO=1 and GRADIPAPEROALIENO=135
_PAPEROALIENO=-1
Else If _PAPEROALIENO=-1 and GRADIPAPEROALIENO=45
_PAPEROALIENO=1
End If
XMOVIMENTOPAPEROALIENO=Cos(GRADIPAPEROALIENO)*80
YMOVIMENTOPAPEROALIENO=Sin(GRADIPAPEROALIENO)*80-50
Bob OGGETTOPAPEROALIENO,XPAPEROALIENO+XMOVIMENTOPAPEROALIENO,YPAPEROALIENO+YMOVIMENTOPAPEROALIENO,IMMAGINEPAPEROALIENO(IMMAGINEPAPEROALIENO)
Proc ILPAPEROALIENOESTATOCOLPITO
Proc ILPAPEROALIENOEUSCITODALCAMPODIGIOCO
End If
End Proc
Procedure _PAPEROINCAMPO
'manage the duck
Bob OGGETTOPAPERO,XPAPERO,YPAPERO,IMMAGINEPAPERO(IMMAGINEPAPERO)
If RITARDOPAPERO=0
Add IMMAGINEPAPERO,1,0 To IMMAGINIPAPERO-1
End If
Add RITARDOPAPERO,1,0 To 12
If MATTONCINODATROVAREPERILPAPERO<247
If MATTONCINO(MATTONCINODATROVAREPERILPAPERO)>0
XMATTONCINOPERILPAPERO=X0ZONA(MATTONCINODATROVAREPERILPAPERO)-XPAPERO
YMATTONCINOPERILPAPERO=Y0ZONA(MATTONCINODATROVAREPERILPAPERO)-YPAPERO
If Abs(XMATTONCINOPERILPAPERO)+Abs(YMATTONCINOPERILPAPERO)<DISTANZADELMATTONCINOPIUVICINOALPAPERO
DISTANZADELMATTONCINOPIUVICINOALPAPERO=Abs(XMATTONCINOPERILPAPERO)+Abs(YMATTONCINOPERILPAPERO)
MATTONCINOPERILPAPERO=MATTONCINODATROVAREPERILPAPERO
End If
End If
Add MATTONCINODATROVAREPERILPAPERO,1,0 To 247
Else
If MATTONCINO(MATTONCINOPERILPAPERO)>0
XDISTANZADELPAPERODALMATTONCINOPIUVICINO=X0ZONA(MATTONCINOPERILPAPERO)+10-XPAPERO
If XDISTANZADELPAPERODALMATTONCINOPIUVICINO>0
Inc XPAPERO
Else If XDISTANZADELPAPERODALMATTONCINOPIUVICINO<0
Dec XPAPERO
End If
YDISTANZADELPAPERODALMATTONCINOPIUVICINO=Y0ZONA(MATTONCINOPERILPAPERO)+5-YPAPERO
If YDISTANZADELPAPERODALMATTONCINOPIUVICINO>0
Inc YPAPERO
Else If YDISTANZADELPAPERODALMATTONCINOPIUVICINO<0
Dec YPAPERO
End If
If XDISTANZADELPAPERODALMATTONCINOPIUVICINO=0 and YDISTANZADELPAPERODALMATTONCINOPIUVICINO=0
Proc CANCELLAILPAPERO
X0MATTONCINO=X0ZONA(MATTONCINOPERILPAPERO)
Y0MATTONCINO=Y0ZONA(MATTONCINOPERILPAPERO)
X1MATTONCINO=X0MATTONCINO+19
Y1MATTONCINO=Y0MATTONCINO+9
Dec MATTONCINI : Inc PUNTEGGIO : Proc MOSTRAILPUNTEGGIO[FALSO]
ESPLOSIONEMATTONCINO(MATTONCINOPERILPAPERO)=1
Proc MATTONCINIDIPOTENZIAMENTO[MATTONCINOPERILPAPERO+1,Rnd(9)]
MATTONCINO(MATTONCINOPERILPAPERO)=0
Proc RIDISEGNODELMATTONCINO[MATTONCINOPERILPAPERO+1,1000]
End If
Else
MATTONCINODATROVAREPERILPAPERO=0
DISTANZADELMATTONCINOPIUVICINOALPAPERO=1000
End If
End If
End Proc
Procedure RIDISEGNODELMATTONCINO[MATTONCINO,DURATADELRIDISEGNODELMATTONCINO]
'redraw the hitted bricks
For MATTONCINODARIDISEGNARE=0 To MASSIMOMATTONCINIDARIDISEGNARE-1
If MATTONCINODARIDISEGNARE(MATTONCINODARIDISEGNARE)=MATTONCINO
DURATADELRIDISEGNODELMATTONCINO(MATTONCINODARIDISEGNARE)=DURATADELRIDISEGNODELMATTONCINO
Else If DURATADELRIDISEGNODELMATTONCINO(MATTONCINODARIDISEGNARE)=0
MATTONCINODARIDISEGNARE(MATTONCINODARIDISEGNARE)=MATTONCINO
DURATADELRIDISEGNODELMATTONCINO(MATTONCINODARIDISEGNARE)=DURATADELRIDISEGNODELMATTONCINO
Pop Proc
End If
Next MATTONCINODARIDISEGNARE
End Proc
Procedure RIMETTILOSFONDO
'redraw the screen
Put Block 1
End Proc
Procedure RUBAPALLINAINCAMPO
'manage the ballthief
If PALLINASCELTADALRUBAPALLINA=MASSIMOPALLINEINCAMPO
PALLINA=Rnd(MASSIMOPALLINEINCAMPO-1)
If PALLINA(PALLINA)=VERO
PALLINASCELTADALRUBAPALLINA=PALLINA
YRUBAPALLINA=0
If EFFETTISONORICARICATI=2
Sam Play VOCE,13 : Proc VOCESEGUENTE
Else If EFFETTISONORICARICATI=1
Bell 4
End If
End If
Else
Bob OGGETTORUBAPALLINA,XRUBAPALLINA,YRUBAPALLINA,IMMAGINERUBAPALLINA(IMMAGINERUBAPALLINA)
If PALLINAPRESADALRUBAPALLINA=MASSIMOPALLINEINCAMPO
If PALLINA(PALLINASCELTADALRUBAPALLINA)=VERO
XPALLINA=Int(XPALLINA#(PALLINASCELTADALRUBAPALLINA))
YPALLINA=Int(YPALLINA#(PALLINASCELTADALRUBAPALLINA))
XRUBAPALLINA=XPALLINA
If YRUBAPALLINA>YPALLINA
Dec YRUBAPALLINA
Else If YRUBAPALLINA<YPALLINA
Inc YRUBAPALLINA
Else
PALLINAPRESADALRUBAPALLINA=PALLINASCELTADALRUBAPALLINA
PALLINA(PALLINAPRESADALRUBAPALLINA)=FALSO
End If
Else
PALLINASCELTADALRUBAPALLINA=MASSIMOPALLINEINCAMPO
PALLINAPRESADALRUBAPALLINA=MASSIMOPALLINEINCAMPO
End If
Else
Bob OGGETTOPALLINA+PALLINAPRESADALRUBAPALLINA,XRUBAPALLINA,YRUBAPALLINA,IMMAGINEPALLINA
Add XRUBAPALLINA,Rnd(6)-3
Proc LIMITI[XRUBAPALLINA,11,XFINALERIGA-11] : XRUBAPALLINA=Param
Dec YRUBAPALLINA
If RITARDODELLARIPETIZIONEDELSUONODELLAPALLINARUBATA=0
If EFFETTISONORICARICATI=2
Sam Play VOCE,14 : Proc VOCESEGUENTE
Else If EFFETTISONORICARICATI=1
Bell 4
End If
End If
Add RITARDODELLARIPETIZIONEDELSUONODELLAPALLINARUBATA,1,0 To 49
Proc ILRUBAPALLINAEUSCITODALCAMPODIGIOCO
End If
Proc ILRUBAPALLINAESTATOCOLPITO
End If
End Proc
Procedure SALVAIPUNTEGGIDEICENTOMIGLIORIGIOCATORI
'save the top hundred scores
If Exist(PUNTEGGI$) Then Kill PUNTEGGI$
Open Out 1,PUNTEGGI$
For POSIZIONI=0 To 99
If Val(PUNTEGGIODELGIOCATORE$(POSIZIONI))>0
Print #1,NOMEDELGIOCATORE$(POSIZIONI)
Print #1,PUNTEGGIODELGIOCATORE$(POSIZIONI)
Print #1,LIVELLOINCUIILGIOCATOREHAFINITOILGIOCO$(POSIZIONI)
End If
Next POSIZIONI
Close 1
End Proc
Procedure SUONAILMODULOMED
Med Play
End Proc
Procedure SUONAILMOTIVODIFONDO
'play the background motive
Sam Raw 8,Start(BANCODELMOTIVODIFONDO),Length(BANCODELMOTIVODIFONDO),8363
End Proc
Procedure TESTOGRAFICOCENTRATOOFATTOSCORRERE[TESTO$,C0LORETESTOPRIMALINEA,C0LORETESTOSECONDALINEA,C0LOREBORDO,TEMP0]
'manage the texts
If TESTO$="" Then Get Block 1,0,0,Screen Width,Screen Height
ALTEZZALINEA=ALTEZZAFONT+3
LINEE=1
POSIZIONEPAROLA=1
Repeat
ACAPO=Instr(TESTO$,ACAPO$,POSIZIONEPAROLA)
If ACAPO>0 Then Inc LINEE : POSIZIONEPAROLA=ACAPO+1
Until ACAPO=0
If LINEE=1
C0LORETESTO=C0LORETESTOPRIMALINEA
XINIZIOTESTO=(Screen Width-Text Length(TESTO$))/2
YINIZIOTESTO=(Screen Height-(ALTEZZALINEA))/2+Text Base
Proc CREATESTOBORDATO[XINIZIOTESTO,YINIZIOTESTO,TESTO$,C0LORETESTO,C0LOREBORDO]
Screen Swap : Proc RIMETTILOSFONDO
Proc _ASPETTA[TEMP0]
If TASTO=27
Pop Proc
End If
Else
Dim TESTO$(LINEE-1)
POSIZIONEPAROLA=1
For LINEA=0 To LINEE-1
ACAPO=Instr(TESTO$,ACAPO$,POSIZIONEPAROLA)
If ACAPO>0
TESTO$(LINEA)=Mid$(TESTO$,POSIZIONEPAROLA,ACAPO-POSIZIONEPAROLA)
POSIZIONEPAROLA=ACAPO+1
Else
TESTO$(LINEA)=Right$(TESTO$,Len(TESTO$)-POSIZIONEPAROLA+1)
End If
Next LINEA
ALTEZZATESTO=ALTEZZALINEA*LINEE
If ALTEZZATESTO<Screen Height
ILTESTOSTATUTTONELLOSCHERMO=VERO
Else
For LINEA=LINEE To 2 Step -1
ALTEZZATESTO=ALTEZZALINEA*LINEA
If ALTEZZATESTO<Screen Height
NUMEROMASSIMODILINEENELLOSCHERMO=LINEA
Exit
End If
Next LINEA
End If
If ILTESTOSTATUTTONELLOSCHERMO=VERO
YINIZIOTESTO=(Screen Height-ALTEZZATESTO)/2+Text Base
For LINEA=0 To LINEE-1
If LINEA mod 2=0
C0LORETESTO=C0LORETESTOPRIMALINEA
Else
C0LORETESTO=C0LORETESTOSECONDALINEA
End If
XINIZIOTESTO=(Screen Width-Text Length(TESTO$(LINEA)))/2
Proc CREATESTOBORDATO[XINIZIOTESTO,YINIZIOTESTO+ALTEZZALINEA*LINEA,TESTO$(LINEA),C0LORETESTO,C0LOREBORDO]
Next LINEA
Screen Swap : Proc RIMETTILOSFONDO
Proc _ASPETTA[TEMP0]
If TASTO=27
Pop Proc
End If
Else
YINIZIOTESTO=(Screen Height-ALTEZZATESTO)/2+Text Base
For LINEA=0 To NUMEROMASSIMODILINEENELLOSCHERMO-1
If(LINEA) mod 2=0
C0LORETESTO=C0LORETESTOPRIMALINEA
Else
C0LORETESTO=C0LORETESTOSECONDALINEA
End If
XINIZIOTESTO=(Screen Width-Text Length(TESTO$(LINEA)))/2
Proc CREATESTOBORDATO[XINIZIOTESTO,YINIZIOTESTO+ALTEZZALINEA*LINEA,TESTO$(LINEA),C0LORETESTO,C0LOREBORDO]
Next LINEA
Screen Swap : Proc RIMETTILOSFONDO
Proc _ASPETTA[TEMP0*NUMEROMASSIMODILINEENELLOSCHERMO]
If TASTO=27
Pop Proc
End If
For LINEA=1 To LINEE-NUMEROMASSIMODILINEENELLOSCHERMO
For LINEANELLOSCHERMO=0 To NUMEROMASSIMODILINEENELLOSCHERMO-1
If(LINEA+LINEANELLOSCHERMO) mod 2=0
C0LORETESTO=C0LORETESTOPRIMALINEA
Else
C0LORETESTO=C0LORETESTOSECONDALINEA
End If
XINIZIOTESTO=(Screen Width-Text Length(TESTO$(LINEANELLOSCHERMO+LINEA)))/2
Proc CREATESTOBORDATO[XINIZIOTESTO,YINIZIOTESTO+ALTEZZALINEA*LINEANELLOSCHERMO,TESTO$(LINEANELLOSCHERMO+LINEA),C0LORETESTO,C0LOREBORDO]
Next LINEANELLOSCHERMO
Screen Swap : Proc RIMETTILOSFONDO
Proc _ASPETTA[TEMP0]
If TASTO=27
Pop Proc
End If
Next LINEA
End If
End If
End Proc
Procedure T0GLILARCOBALENO
'fade out the rainbow
For LINEADELLARCOBALENO=271 To 271-255 Step -1
Rainbow 0,257,0,LINEADELLARCOBALENO
Wait Vbl
Next LINEADELLARCOBALENO
End Proc
Procedure T0GLILARIGA
'turn off the row
Bob Off OGGETTORIGA
Bob Update
End Proc
Procedure T0GLIILLASER
'turn off the laser beam
Bob Off OGGETTOLASER
Bob Update
End Proc
Procedure T0GLIILPANNELLO
'fade out the panel
Ink 0
For LINEAPANNELLO=255 To 0 Step -1
Draw XPANNELLO,LINEAPANNELLO To XPANNELLO+LARGHEZZAPANNELLO-1,LINEAPANNELLO
Wait Vbl
Next LINEAPANNELLO
End Proc
Procedure T0GLIIMATTONCINI
'fade out the bricks
Ink 0
For MATTONCINO=246 To 0 Step -1
If MATTONCINO(MATTONCINO)>0
Bar X0ZONA(MATTONCINO),Y0ZONA(MATTONCINO) To X0ZONA(MATTONCINO)+19,Y0ZONA(MATTONCINO)+9
Wait Vbl
End If
Next MATTONCINO
End Proc
Procedure TROVAILFONTDATA70
'look for the Data70 font
If Exist("FONTS:")=VERO
TESTOFONTEDICARATTERI$="I am looking for the Data70 font..."+ACAPO$
TESTOFONTEDICARATTERI$=TESTOFONTEDICARATTERI$+"...in your FONTS: drawer."+ACAPO$
TESTOFONTEDICARATTERI$=TESTOFONTEDICARATTERI$+"Wait for a moment, please..."
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[TESTOFONTEDICARATTERI$,17,17,19,-1]
Get Disc Fonts
CISONOFONTIDICARATTERI=FALSO
For FONTEDICARATTERI=1 To 65536
FONTEDICARATTERI$=Right$(Left$(Font$(FONTEDICARATTERI),30)-" ",5)
If FONTEDICARATTERI$=".font"
CISONOFONTIDICARATTERI=VERO
End If
FONTEDICARATTERI$=Left$(Font$(FONTEDICARATTERI),30)-" "
If FONTEDICARATTERI$="Data70.font"
Exit
End If
Next FONTEDICARATTERI
If CISONOFONTIDICARATTERI=FALSO
TESTOFONTEDICARATTERI$="I have found no fonts in your FONTS: drawer :("+ACAPO$
TESTOFONTEDICARATTERI$=TESTOFONTEDICARATTERI$+"The font I am using is the Topaz font!"+ACAPO$
TESTOFONTEDICARATTERI$=TESTOFONTEDICARATTERI$+"This font will be used for the game."+ACAPO$
TESTOFONTEDICARATTERI$=TESTOFONTEDICARATTERI$+"Press a (mouse) key to continue..."
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[TESTOFONTEDICARATTERI$,18,18,19,250]
Else
If FONTEDICARATTERI<65536
Set Font FONTEDICARATTERI
ALTEZZAFONT=Val(Mid$(Font$(FONTEDICARATTERI),31,2)-" ")
TESTOFONTEDICARATTERI$="I have found the Data70 font! :)"+ACAPO$
TESTOFONTEDICARATTERI$=TESTOFONTEDICARATTERI$+"The font I am using is the Data70 font!"+ACAPO$
TESTOFONTEDICARATTERI$=TESTOFONTEDICARATTERI$+"This font will be used for the game."+ACAPO$
TESTOFONTEDICARATTERI$=TESTOFONTEDICARATTERI$+"Press a (mouse) key to continue..."
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[TESTOFONTEDICARATTERI$,17,17,19,250]
Else
TESTOFONTEDICARATTERI$="I have not found the Data70 font! :("+ACAPO$
TESTOFONTEDICARATTERI$=TESTOFONTEDICARATTERI$+"The font I am using is the Topaz font!"+ACAPO$
TESTOFONTEDICARATTERI$=TESTOFONTEDICARATTERI$+"This font will be used for the game."+ACAPO$
TESTOFONTEDICARATTERI$=TESTOFONTEDICARATTERI$+"Press a (mouse) key to continue..."
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[TESTOFONTEDICARATTERI$,18,18,19,250]
End If
End If
Else
TESTOFONTEDICARATTERI$="I have not found the FONTS: drawer :("+ACAPO$
TESTOFONTEDICARATTERI$=TESTOFONTEDICARATTERI$+"The font I am using is the Topaz font!"+ACAPO$
TESTOFONTEDICARATTERI$=TESTOFONTEDICARATTERI$+"This font will be used for the game."+ACAPO$
TESTOFONTEDICARATTERI$=TESTOFONTEDICARATTERI$+"Press a (mouse) key to continue..."
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[TESTOFONTEDICARATTERI$,18,18,19,250]
End If
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1]
End Proc
Procedure VOCESEGUENTE
'select the next audio voice for the next sound
Add VOCE,VOCE
If MOTIVODIFONDOCARICATO=1
If VOCE=8 or VOCE=16
VOCE=1
End If
Else
If VOCE=16
VOCE=1
End If
End If
End Proc